私は次のような 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 が機能するということですか?