欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何在DataGrid控件中隐藏列

程序员文章站 2022-06-03 08:17:29
前言:.net在提供我们丰富的内置控件方便我们开发的同时,一些格式化的东西也限制了我们灵活的要求。在datagrid控件中,我们遇到的一个非常典型的问题就是如何把我们不想显示的列根据需要随时隐藏掉。...
前言:
.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="publishers id">
<itemtemplate>
<span><%# container.dataitem("pub_id") %></span>
</itemtemplate>
</asp:templatecolumn>
<asp:templatecolumn headertext="publishers 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)