我有一个像这样的GridView:
<asp:GridView ID="gvwStudents" runat="server"
AutoGenerateColumns="False" DataKeyNames="ID"
ShowHeader="False" onrowdeleting="gvwStudents_RowDeleting">
<Columns>
<asp:BoundField DataField="FirstName" />
<asp:BoundField DataField="LastName" />
<asp:BoundField DataField="Email" />
<asp:CommandField ShowDeleteButton="True" DeleteText="Remove" />
</Columns>
</asp:GridView>下面是我如何创建GridView绑定的DataTable,这样您就可以知道我处理的是什么数据:
private DataTable MakeStudentsTable()
{
DataTable students = new DataTable();
DataColumn ID = students.Columns.Add("ID", typeof(int));
ID.AutoIncrement = true;
DataColumn firstName = students.Columns.Add("FirstName", typeof(string));
DataColumn lastName = students.Columns.Add("LastName", typeof(string));
DataColumn email = students.Columns.Add("Email", typeof(string));
return students;
}为什么,哦,为什么没有在RowDeleting事件的EventArgs中传递键呢?我需要从ADO.NET DataTable中删除在触发此事件时保持在会话状态中的记录。
为什么这不起作用?是不是只有在使用DataSource控件时DataKeys才能工作?
发布于 2009-02-25 06:31:43
这是可行的:
private DataTable MakeStudentsTable()
{
DataTable students = new DataTable();
DataColumn ID = students.Columns.Add("ID", typeof(int));
ID.AutoIncrement = true;
DataColumn firstName = students.Columns.Add("FirstName", typeof(string));
DataColumn lastName = students.Columns.Add("LastName", typeof(string));
DataColumn email = students.Columns.Add("Email", typeof(string));
DataRow student = students.NewRow();
student["FirstName"] = "foo";
student["LastName"] = "bar";
student["Email"] = "foo@bar.com";
students.Rows.Add(student);
return students;
}
protected void gvwStudents_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string id = this.gvwStudents.DataKeys[e.RowIndex].Value.ToString();
}发布于 2016-09-02 23:18:11
将GridView控件的DataKeyNames属性设置为数据的主键的名称。
https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.datakeynames.aspx
发布于 2009-02-24 22:23:34
添加
<asp:BoundField DataField="ID" />并查看该字段是否有值。
https://stackoverflow.com/questions/583796
复制相似问题