大家好,我是以为aspx初学者...
想做一个简单的用c#编写的数据库增删改页面...
我没有用dataset..只是用到
this._sqlReader=this._myDB.ExecuteReader(this._strSql);
DataGrid1.DataSource = this._sqlReader;
DataGrid1.DataBind();但当datagrid1绑定之后,页面上的数据也能显示.但是DataGrid.DataKeys这个集合总是为空,
在做editcommand时
private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{ DataGrid1.EditItemIndex = e.Item.ItemIndex;}
此时的e.Item.ItemIndex是有效的..
但当执行updatecommand时
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string key = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();......}
就会报错,说超出范围....
情况如上.希望得到大家的帮忙.....谢谢

解决方案 »

  1.   

    因为DataGrid是自动绑定的,所以,不仅DataKeys总是空的,连Columns.Count也总是0。
      

  2.   

    string key = ((TextBox)e.Item.Cells[从0开始的列的索引].Controls[0]).Text
      

  3.   

    你没有设置 dataGrid.DataKey 当然是空的,到datagrid的属性设置框里面找到设置一下相应字段名。
      

  4.   

    did you setDataGrid1.DataKeyField = "YourKeyColumn";or<asp:DataGrid DataKeyField = "YourKeyColumn" ...>??