果4点儿

我边学边干,在IT世界闯荡.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DataGrid 与 GridView 隐藏列 设置及取值问题

Posted on 2009-04-12 17:51  果4点儿  阅读(1666)  评论(0编辑  收藏  举报

DataGrid与GridView两者是.NetFramework不同版本中的控件。

前者是1.x中的,后者是2.0以后的。GridView功能上要比DataGrid强很多,比如分页,持续更新,等。

在这些数据绑定控件中,常为了完成某些操作,会隐藏某些列,并保存一些数据,以便在操作时提取当参数引用。

本文主要讲讲一些简单的隐藏和取值的方法。

在2.0中,GridView要隐藏一列方法很多。

如果在页面中直接将Visiable="false",则你在后台无法取值,此时你查看源代码,根本没生成这一列。注意,在DataGrid中这样操作是可以取值的。

如果又要隐藏又要能读到值,则有以下方法:

方法一:

设置RowCreated事件

 protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
        {
            e.Row.Cells[0].Visible = false;//在这里隐藏你的行
        }

这样操作就可以取到值,本人不是特别明白这种操作与直接设置为Visiable="false"有什么不一样

MS的东西就是封装的太厉害了,看不懂。

方法二:

用其他列,不用BoundField。

用模板列的方法如下:

  <asp:TemplateField> 
                                <ItemTemplate>
                                                <asp:HiddenField   ID= "HiddenField1 "   runat= "server "   Value= ' <%#   Bind( "ModuleID ")   %> '   />
                                        </ItemTemplate>
  </asp:TemplateField>

后台取值如下:
moduleid   =   System.Convert.ToInt32(((HiddenField)row.Cells[7].FindControl( "HiddenField1 ")).Value);

详细内容,下面文章中已经有讨论。

 http://topic.csdn.net/u/20070710/13/252a34fd-4350-41b2-9471-6549799f970d.html?1807690838