做了一个ADO.net练习,用DataList控件做数据库更新,private void DataList1_UpdateCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
/*.....
.....
*/
//执行更新前应先指定更新的主键,我在该函数中指明主键执行时提示DataKeys越界,为什么?
// DataList1.DataKeyField="au_id"; //error string id=this.DataList1.DataKeys[e.Item.ItemIndex].ToString(); /*...
...*/
}
之后我修改了一下,在该函数执行之前但在上次DataList1.DataBind()之后加上了DataList1.DataKeyField="au_id";ok!两者效果不是一样的吗?
{
/*.....
.....
*/
//执行更新前应先指定更新的主键,我在该函数中指明主键执行时提示DataKeys越界,为什么?
// DataList1.DataKeyField="au_id"; //error string id=this.DataList1.DataKeys[e.Item.ItemIndex].ToString(); /*...
...*/
}
之后我修改了一下,在该函数执行之前但在上次DataList1.DataBind()之后加上了DataList1.DataKeyField="au_id";ok!两者效果不是一样的吗?
求取datakeys时,指定的行必须非-1并且小于该行的行数,比如
string id = this.datagrid1.DataKeys[1].ToString();