如何在DataGrid控件中隐藏列

前言:
asp.net在提供我们丰富的内置控件方便我们开发的同时,一些格式化的东西也限制了我们灵活的要求。在DataGrid控件中,我们遇到的一个非常典型的问题就是如何把我们不想显示的列根据需要随时隐藏掉。
解决方案:
我们不能隐藏在DataGrid里自动生成列的主要的一点原因是:DataGrid里的column不能被DataGrid的属性DataGridColumn增加。
基于以上原因,我们可以提出两种不同的方案来解决这个问题。
方案一:
根据页面请求的事件来隐藏列:
代码:

1@ Page Language="VB" 
1@ Import Namespace="System.Data" 
1@ Import Namespace="System.Data.SqlClient" 
 1<html>
 2<script runat="server">   
 3Sub Page_Load(Sender As Object, E As EventArgs)   
 4Dim myConnection As SqlConnection = new _   
 5SqlConnection("Data Source=(local)\NetSDK; Trusted_Connection=Yes;_ Initial Catalog=pubs")   
 6Dim myCommand As SqlCommand = New SqlCommand("Select * From_ Publishers",myConnection)   
 7  
 8myConnection.Open()   
 9myDataGrid.DataSource = myCommand.ExecuteReader_ (CommandBehavior.CloseConnection)   
10myDataGrid.DataBind()   
11End Sub   
12Sub HideShow_Click(Sender As Object, E As EventArgs)   
13If myDataGrid.Columns(0).Visible = False Then   
14myDataGrid.Columns(0).Visible = True   
15Else   
16myDataGrid.Columns(0).Visible = False   
17End If   
18End Sub   
19</script>
20<body>
21<form runat="server">
22<asp:datagrid autogeneratecolumns="false" id="myDataGrid" runat="server" width="25%">
23<columns>
24<asp:templatecolumn headertext="Publisher's ID">
25<itemtemplate>
26<span>```
27# Container.DataItem("pub_id") 
28```</span>
29</itemtemplate>
30</asp:templatecolumn>
31<asp:templatecolumn headertext="Publisher's Name">
32<itemtemplate>
33<span>```
34# Container.DataItem("pub_name") 
35```</span>
36</itemtemplate>
37</asp:templatecolumn>
38<asp:templatecolumn headertext="City">
39<itemtemplate>
40<span>```
41# Container.DataItem("city") 
42```</span>
43</itemtemplate>
44</asp:templatecolumn>
45<asp:templatecolumn headertext="State">
46<itemtemplate>
47<span>```
48# Container.DataItem("state") 
49```</span>
50</itemtemplate>
51</asp:templatecolumn>
52<asp:templatecolumn headertext="Country">
53<itemtemplate>
54<span>```
55# Container.DataItem("country") 
56```</span>
57</itemtemplate>
58</asp:templatecolumn>
59</columns>
60</asp:datagrid>
61<asp:button id="HideShow" onclick="HideShow_Click" runat="server" text="Hide/Show"></asp:button>
62</form>
63</body>
64</html>

程序执行执行演示:
Show:

(图show)
Hide

(图hide)
方案二:

方案二实际上是一的变通,我就简单的介绍一下。在一中我们通过button的OnClick事件来判断是Show还是Hide,那么我们也可以通过联接获取参数的值来做判断。
代码:

1@ Page Language="VB"
1@ Import Namespace="System.Data" 
1@ Import Namespace="System.Data.SqlClient" 
 1<html>
 2<script runat="server">   
 3Sub Page_Load(Sender As Object, E As EventArgs)   
 4Dim myConnection As SqlConnection = new _   
 5SqlConnection("Data Source=(local)\NetSDK; Trusted_Connection=Yes;_ Initial Catalog=pubs")   
 6Dim myCommand As SqlCommand = New SqlCommand("Select * From Publishers",_ myConnection)   
 7  
 8myConnection.Open()   
 9myDataGrid.DataSource = myCommand.ExecuteReader_(CommandBehavior.CloseConnection)   
10myDataGrid.DataBind()   
11If Request.QueryString("Security") = "Admin" Then   
12myDataGrid.Columns(0).Visible = False   
13End If   
14End Sub   
15</script>
16<body>
17<form runat="server">
18<asp:datagrid autogeneratecolumns="false" id="myDataGrid" runat="server">
19<columns>
20<asp:templatecolumn headertext="Publisher's ID">
21<itemtemplate>
22<span>```
23# Container.DataItem("pub_id") 
24```</span>
25</itemtemplate>
26</asp:templatecolumn>
27<asp:templatecolumn headertext="Publisher's Name">
28<itemtemplate>
29<span>```
30# Container.DataItem("pub_name") 
31```</span>
32</itemtemplate>
33</asp:templatecolumn>
34<asp:templatecolumn headertext="City">
35<itemtemplate>
36<span>```
37# Container.DataItem("city") 
38```</span>
39</itemtemplate>
40</asp:templatecolumn>
41<asp:templatecolumn headertext="State">
42<itemtemplate>
43<span>```
44# Container.DataItem("state") 
45```</span>
46</itemtemplate>
47</asp:templatecolumn>
48<asp:templatecolumn headertext="Country">
49<itemtemplate>
50<span>```
51# Container.DataItem("country") 
52```</span>
53</itemtemplate>
54</asp:templatecolumn>
55</columns>
56</asp:datagrid>
57</form>
58</body>
59</html>

程序执行演示:
1.Security参数的值:Nothing

(图:hidde)
Security参数:Admin

(图:Show)

Published At
Categories with Web编程
Tagged with
comments powered by Disqus