ASP.NET - Pas de Datakey sur Gridview RowDeleting événement!

J'ai un GridView comme cela:

<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>

Ici est de savoir comment je suis entrain de créer ma DataTable, qui GridView est lié, de sorte que vous savez quelles sont les données que je fais affaire avec:

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;
}

Pourquoi, oh, pourquoi il n'y a pas de touches passé dans le EventArgs de la RowDeleting événement? J'ai besoin de supprimer l'enregistrement de la ADO.NET DataTable que je suis maintenant dans l'état de session lorsque cet événement est déclenché.

Pourquoi n'est-ce pas de travail? Est-ce que DataKeys fonctionnent uniquement lorsque vous utilisez un contrôle de source de données?

Je pense que vous devriez ajouter la "liaison de données" tag à cette question. BTW, j'ai été frapper ma tête sur exactement le même problème.
Comment êtes-vous en ajoutant des étudiants à votre table? Les données renseignées dans votre table avant la Suppression de la méthode appelée (c'est à dire dans le Page_Load)?

OriginalL'auteur Ronnie Overby | 2009-02-24