如何取得GridView被隐藏列的值

本文介绍了在使用GridView时,如何在列使用了Visible=false的情况下,仍能获取隐藏列的数据。通过设置DataKeyNames属性、使用CSS类进行隐藏以及在RowCreated事件中设置隐藏,可以实现在不显示列的情况下获取其数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在优快云上看到有人问“如何取得GridView被隐藏列的值?”,当GridView列使用了Visible=false时,数据就不会被加载到表格中了,自然也取不到值了。但是我们就是想要取这个隐藏列的值该怎么办呢?我也遇到过这个问题, 印象中是设定GridView的DataKeys属性。网上搜了一下,总结一下基本有三种方法:

方法一:
设置GridView列的Visible=false,再设定GridView的DataKeyNames="你想要隐藏的列ID"。例如: 
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID" DataSourceID="SqlDataSource1" >

<Columns> 
<asp:BoundField DataField="UserID" HeaderText="UserID" ReadOnly="True" SortExpression="UserID" Visible ="false" />
<asp:BoundField DataField="age" HeaderText="age" SortExpression="age" />

。。。

</Columns>  
</asp:GridView>


方法二:
设置一个Css类: 
 .hidden { display:none;} 
随后在GridView的列编辑对话框中,对需要进行隐藏的列进行设置,分别设置FootStyle,HeaderStyle,ItemStyle的CssClass属性为“hidden” Ok,这样我们就实现了隐藏列的目的,同时又能保证对其进行数据绑定。 
  
方法三: 
在GridView中设置该列的Visible为True,然后在RowCreated事件中设置隐藏,这样就能取到隐藏列的值了。例如:

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)    

{         

    if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header)                            

    {                         

          e.Row.Cells[1].Visible = false;              

     }     

 } 

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/qlk_2007/archive/2008/11/05/3223843.aspx

在使用 vs 2003 的时候,将多个列隐藏供程序处理的时候使用,通常是将这个列的visible=false 即可解决。但在 2.0之后 GridView 隐藏列就无法获取到值。一个较优雅的GridView隐藏列取值解决方案   对于多列这样做一样取不到值,  GridView隐藏列取值  这样做确实有点麻烦。通过摸索,终于找到了一种相对简单的实现方法。
我的实现方法: 
1. gridview 绑定的之前增加:

           if  (ds  !=   null )
            
{
                
string[] dkey = "autoid""myUserID""outerKey" };
                
this.gdvAlbum.DataKeyNames = dkey;

                
this.gdvAlbum.DataSource = ds.Tables[0];
                
this.gdvAlbum.DataBind();
            }


 

2.取值:

System.Collections.Specialized.IOrderedDictionary dk  =  gdvAlbum.DataKeys[i].Values;
  
int  albumID  =   int .Parse(dk[ 0 ]);
  
int  myID  =   int .Parse(dk[ 1 ]);
  
string  okey  =  dk[ 2 ].ToString();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值