0
ASP.NET - Нет Datakey в событии Gridview RowDeleting!
У меня есть 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>
Вот как я создаю свой DataTable, к которому привязан GridView, чтобы вы знали, с какими данными я имею дело:
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;
}
Почему, о, почему в EventArgs события RowDeleting не передаются ключи? Мне нужно удалить запись из таблицы данных ADO.NET, которую я сохраняю в состоянии сеанса, когда это событие запускается.
Почему это не работает? Ключи DataKeys работают только при использовании элемента управления DataSource?
Ответов (3)3
Решение
0
Это работает:
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"] = "[email protected]";
students.Rows.Add(student);
return students;
}
protected void gvwStudents_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string id = this.gvwStudents.DataKeys[e.RowIndex].Value.ToString();
}
0
Задайте для свойства DataKeyNames элемента управления GridView имя (имена) первичного ключа (ов) ваших данных.
https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.datakeynames.aspx