您的位置:首页 > 编程学习 > ASP.NET > 正文

如何获取gridview隐藏列的值

更多 时间:2014-2-13 类别:编程学习 浏览量:4489

如何获取gridview隐藏列的值

如何获取gridview隐藏列的值

方法一:利用新的属性DataKeys和DataKeyNames

 

针对GridView无法提供行主键的问题,它提供了两个全新的属性:DataKeys和DataKeyNames!

其SDK中的描述如下:


DataKeyNames:获取或设置一个数组,该数组包含了显示在 GridView 控件中的项的主键字段的名称。
DataKeys:获取一个 DataKey 对象集合,这些对象表示 GridView 控件中的每一行的数据键值。

也就是说,利用DataKeyNames,可以设置一个多个列,用于作为行的主键字段(这里用主键其实不太合适,因为值时允许重复的),之后利用DataKeys旧可以访问这些列的值了。因此,利用这两个新属性,我们就可以继续使用利用列的Visible属性设置来隐藏列的同时,又可以访问隐藏列的值了。

代码如下:

  •  
  • C# 代码   复制
  • 
    GV.Columns[5].Visible = false;//设置第6列为隐藏
    
    //只需要在设置列为隐藏的地方多加一段代码:
    GV.DataKeyNames = new string[] { "stateid_O2" };
    
    //假设第六列的列名为stateid_O2
    protected void GV_UpdateData_RowDataBound(object sender, GridViewRowEventArgs e)
    {
         if (GridView_UpdateData.DataKeys[e.Row.DataItemIndex]["stateid_O2"].ToString() == "1") //利用这个DataKeys属性来访问隐藏列的值
         {
           e.Row.Cells[2].BackColor = System.Drawing.Color.Red;//设置行中第三个单元格背景色为红色
         }
    }
    
    		
  •  

    方法二:利用客户端代码来隐藏列

     

    实际上,我们上面都是在服务器端利用各种方法来隐藏列了,那么这种方法就是服务器端不对列的可见性进行设置,那么显然就不存在无法取值的问题了,那么又要让用户不看到某些列,这就需要客户端的代码css来实现隐藏效果了。可以从上面方法推导出,既可以用css直接隐藏列,也能通过隐藏列的单元格来实现。

    首先需要一个css:

  •  
  • HTML 代码   复制
  • 
    <style type="text/css">
    
       .hidden { display:none;}
    
    </style>
    
    		
  • 随后在GridView的列编辑对话框中,对需要进行隐藏的列进行设置,分别设置FootStyle,HeaderStyle,ItemStyle的CssClass属性为“hidden” Ok,这样我们就实现了隐藏列的目的,同时又能保证对其进行数据绑定。

     

    方法三:在GridView控件RowCreated事件中设置隐藏

     

    在GridView中设置该列的Visible为True,然后在RowCreated事件中设置隐藏,这样就能取到隐藏列的值了。

    例如:

  •  
  • C# 代码   复制
  • 
    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;
         }
    }  
    
    		
  •  

    标签:gridview asp.net