最近在使用asp.net2.0中发现GridView与DataGrid在数据访问上的区别相当大,对于DataGrid访问每一行中的数据项通常有两种方法:
<asp:BoundColumn DataField="ID" Visible="False"/>
//后台处理
int id = int.Parse(Grid1.Items[index].Cells[0].Text);
//或采用
int id = (int)((DataRowView)Grid1.Items[index].DataItem).Row["ID"]);
对于GridView两种方法均不见效,
Visible=Flase的列不再Render,所以客户端不可能访问,对于DataItem,除了RowDataBound几个事件中可以使用,
ViewState中不在保存DataItem,因此,对于GridView如果想知道某一行的值,不可以将其设为Visile=false,如果确实不
想在界面中显示这一列的值,可以用DataKeyNames和DataKeys结合完成一些特别的数据访问.//后台处理
int id = int.Parse(Grid1.Items[index].Cells[0].Text);
//或采用
int id = (int)((DataRowView)Grid1.Items[index].DataItem).Row["ID"]);
<asp:GridView id="GridView1" Runat="Server" DataKeyNames="ObjectID">
</asp:GridView>
//代码中处理选中行的id
int id = int.Parse(GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString());
</asp:GridView>
//代码中处理选中行的id
int id = int.Parse(GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString());