У меня есть GridView так же, как это:ASP.NET - Нет Datakey на мероприятии Gridview RowDeleting!
<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? Мне нужно удалить запись из DataTable ADO.NET, которую я сохраняю в состоянии сеанса, когда это событие запущено.
Почему это не работает? Разве DataKeys работает только при использовании элемента управления DataSource?
Я думаю, вы должны добавить «Databinding» метки на этот вопрос. BTW, я стучал головой по той же проблеме. –
Как вы добавляете студентов в свой стол? Заполняются ли данные в вашей таблице до того, как вызывается метод удаления (т. Е. В Page_Load)? – cjk