如何在DataGrid控件中隱藏列
2024-07-21 02:16:48
供稿:網友
 
如何在datagrid控件中隱藏列
前言:
    asp.net在提供我們豐富的內置控件方便我們開發的同時,一些格式化的東西也限制了我們靈活的要求。在datagrid控件中,我們遇到的一個非常典型的問題就是如何把我們不想顯示的列根據需要隨時隱藏掉。
解決方案:
    我們不能隱藏在datagrid里自動生成列的主要的一點原因是:datagrid里的column不能被datagrid的屬性datagridcolumn增加。
    基于以上原因,我們可以提出兩種不同的方案來解決這個問題。
    方案一:
    根據頁面請求的事件來隱藏列:
代碼:
<%@ 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>
程序執行執行演示:
show:
 
                                (圖show)
hide
 
                               (圖hide)
   方案二:
   
   方案二實際上是一的變通,我就簡單的介紹一下。在一中我們通過button的onclick事件來判斷是show還是hide,那么我們也可以通過聯接獲取參數的值來做判斷。 
代碼:
<%@ 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>
程序執行演示:
1.security參數的值:nothing
 
                                  (圖:hidde)
security參數:admin
 
                                  (圖:show)   
                             
翻譯:cnet   轉自:http://www.aspalliance.com/    全文完