如何在DataGrid控件中隱藏列
發(fā)表時間:2024-02-20 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]前言:asp.net在提供我們豐富的內(nèi)置控件方便我們開發(fā)的同時,一些格式化的東西也限制了我們靈活的要求。在DataGrid控件中,我們遇到的一個非常典型的問題就是如何把我們不想顯示的列根據(jù)需要隨時隱藏掉。解決方案:我們不能隱藏在DataGrid里自動生成列的主要的一點原因是:DataGrid里的c...
前言:
asp.net在提供我們豐富的內(nèi)置控件方便我們開發(fā)的同時,一些格式化的東西也限制了我們靈活的要求。在DataGrid控件中,我們遇到的一個非常典型的問題就是如何把我們不想顯示的列根據(jù)需要隨時隱藏掉。
解決方案:
我們不能隱藏在DataGrid里自動生成列的主要的一點原因是:DataGrid里的column不能被DataGrid的屬性DataGridColumn增加。
基于以上原因,我們可以提出兩種不同的方案來解決這個問題。
方案一:
根據(jù)頁面請求的事件來隱藏列:
代碼:
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<script runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
Dim myConnection As SqlConnection = new _
SqlConnection("Data Source=(local)\NetSDK; Trusted_Connection=Yes;_ Initial Catalog=pubs")
Dim myCommand As SqlCommand = New SqlCommand("Select * From_ Publishers",myConnection)
myConnection.Open()
myDataGrid.DataSource = myCommand.ExecuteReader_ (CommandBehavior.CloseConnection)
myDataGrid.DataBind()
End Sub
Sub HideShow_Click(Sender As Object, E As EventArgs)
If myDataGrid.Columns(0).Visible = False Then
myDataGrid.Columns(0).Visible = True
Else
myDataGrid.Columns(0).Visible = False
End If
End Sub
</script>
<body>
<form runat="server">
<asp:DataGrid id="myDataGrid" Width="25%" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateColumn HeaderText="Publisher's ID">
<ItemTemplate>
<span><%# Container.DataItem("pub_id") %></span>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Publisher's Name">
<ItemTemplate>
<span><%# Container.DataItem("pub_name") %></span>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="City">
<ItemTemplate>
<span><%# Container.DataItem("city") %></span>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="State">
<ItemTemplate>
<span><%# Container.DataItem("state") %></span>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Country">
<ItemTemplate>
<span><%# Container.DataItem("country") %></span>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:Button id="HideShow" Text="Hide/Show" OnClick="HideShow_Click" runat="server" />
</form>
</body>
</html>
程序執(zhí)行執(zhí)行演示:
Show:
(圖show)
Hide
(圖hide)
方案二:
方案二實際上是一的變通,我就簡單的介紹一下。在一中我們通過button的OnClick事件來判斷是Show還是Hide,那么我們也可以通過聯(lián)接獲取參數(shù)的值來做判斷。
代碼:
<%@ Page Language="VB"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<script runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
Dim myConnection As SqlConnection = new _
SqlConnection("Data Source=(local)\NetSDK; Trusted_Connection=Yes;_ Initial Catalog=pubs")
Dim myCommand As SqlCommand = New SqlCommand("Select * From Publishers",_ myConnection)
myConnection.Open()
myDataGrid.DataSource = myCommand.ExecuteReader_(CommandBehavior.CloseConnection)
myDataGrid.DataBind()
If Request.QueryString("Security") = "Admin" Then
myDataGrid.Columns(0).Visible = False
End If
End Sub
</script>
<body>
<form runat="server">
<asp:DataGrid id="myDataGrid" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateColumn HeaderText="Publisher's ID">
<ItemTemplate>
<span><%# Container.DataItem("pub_id") %></span>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Publisher's Name">
<ItemTemplate>
<span><%# Container.DataItem("pub_name") %></span>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="City">
<ItemTemplate>
<span><%# Container.DataItem("city") %></span>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="State">
<ItemTemplate>
<span><%# Container.DataItem("state") %></span>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Country">
<ItemTemplate>
<span><%# Container.DataItem("country") %></span>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
程序執(zhí)行演示:
1.Security參數(shù)的值:Nothing
(圖:hidde)
Security參數(shù):Admin
(圖:Show)