none
GridView隐藏列取值问题 RRS feed

  • 问题

  • GridView隐藏列取值问题

    环境:

    ASP.NET 4.0+Visual Studio 2012

    需求:

    从数据库中读出表到GridView1,隐藏GridView1ID列(不希望用户看到),但GridView1_SelectedIndexChanged(object sender, EventArgs e) 事件又需要获取对应行ID 的值。

    问题:

    网上几乎所有的方案都是:

    在后台数据绑定时候指定:

    this.GridView1.DataKeyNames = new string[] { "ID" };

    this.GridView1.Columns[0].Visible = false;//设置第0列为隐藏

    接下来是取数据:

      如果只有一个关键字,也就是DataKeyNames只有一个值的话,那么可以使用:

    this.Gridview1.DataKeys[e.RowIndex].value.ToString();

    但我发现我的环境(ASP.NET 4.0+Visual Studio 2012),根本没有e.RowIndex这个参数,如下图:

    请问如何解决?谢谢。

    2016年2月25日 23:59

答案

      • protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)  
      •         {  
      •             int index = GridView1.SelectedIndex;  
      •             string ID = GridView1.SelectedDataKey.Values["ID"].ToString(); 
      •             //
      •             GridViewRow row = GridView1.SelectedRow;  
      •         }  

    我也不清楚隐藏了,是不是数据根本就不会传输到页面上,还是说仅仅是不可见

    不过我觉得取值应从数据中取,而不是从UI控件上面去取

    用这样思路做的话,会容易点

    比如你的Gridview1的dataProvider是某个List

    那么这样取值 List[GridView1.SelectedIndex]

    • 已标记为答案 kevin6666 2016年2月26日 2:07
    2016年2月26日 1:30