大家好,我是Asp.net的初学者,正在学习使用datagrid。过程中发现使用“string sID = e.Item.Cells[0].Text;”语句好像取不到隐藏字段的值,向各位请教!
  另外,对于非隐藏的字段,用下标“Cells[i]”的方式读取字段值感觉不是太好,能否使用字段名的方式读取呢?

解决方案 »

  1.   

    如果你用的是vs2003,那么即便是隐藏的字段,string sID = e.Item.Cells[0].Text;是可以取得它的值的,vs2005就不行了~由于绑定到DataGrid后,数据源就不再保留了,所以,只有在DataGrid的单元格里保留有这些字段的值,不作他想~~
      

  2.   

    主要是你这个cells【i】这个i表示列序数是否正确,不然如果你是普通的绑定列你取值的代码是对的。列序数即使某列被隐藏了在计算列序数的时候也应该算在内!!
      

  3.   

    DataKeyNames="ID,Code"在关键字里多加列就好了。.
      

  4.   

    怎样取得datagrid的dataset?因为此时已经不是在创建dataset对象的那个方法里面了。
      

  5.   

    你可以将dataset缓存下来!viewstate当然是在数据量比较小的时候
      

  6.   

    不过上面是要求你能取到当前操作的主键值或者index
      

  7.   

    我之前是学delphi的,Delphi的能通过dbgrid.datasource.dataset取得绑定的数据集,难道.net就没有类似的方法?
      

  8.   

    你知道asp。net的运行机制么?
    dataset如果没有缓存下来是无法用类似于delphi这样的方法来取的
      

  9.   

    隐藏字段的值可以通过 e.Item.Cells[0].Text取值
      

  10.   

    sRow.Cell.FromKey("RecordID").Value.(注:用第三方倥件可以实现,sRow: 当前选中的行)
      

  11.   

    在VS2003中用string sID = e.Item.Cells[0].Text可以取到隐藏列的值。
    VS2005中的用法略有不同,string Id = this.GridView1.DataKeys[e.RowIndex].Value.ToString()应该也可以,你试一下