Warum ist das DataItem null für ein GridView-Zeile "null", wenn Sie versuchen, änderungen zu speichern?

Also ich hab das GridView auf meiner web-Seite. Es ist Datenbindung, also während der RowDataBound-Ereignis dieser code funktioniert sehr gut:

    protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            TimecardApproval shift = (TimecardApproval)e.Row.DataItem;
        }
    }

Die "shift" - variable hat alle Daten, die ich brauche, funktioniert Super. Aber dann gibt es diesen code für das speichern der Daten:

    protected void btnSubmitApprovals_Click(object sender, ImageClickEventArgs e)
    {
        foreach (GridViewRow item in gvTimeCards.Rows)
        {
            TimecardApproval shift = (TimecardApproval)item.DataItem;
            //code to update the row
        }
    }

DataItem null ist! Warum? Da das Feld ist, es scheint seltsam, dass es null. Sollte ich Schleifen über etwas anderes?

DataItem wird bei der Datenbindung. Auf postbacks es ist immer null, bis Sie DataBind des GridView-Steuerelements wieder. Beachten Sie, dass alle Variablen, die entsorgt werden, am Ende der Seite-Lebenszyklus. Was genau brauchen Sie in btnSubmitApprovals_Click? Normalerweise erhalten Sie es von den Steuerelementen in der Gebundenen-/TemplateFields.
Die Dokumentation sagt: Die DataItem-Eigenschaft ist nur verfügbar, während und nach dem RowDataBound-Ereignis des GridView-Steuerelement. Können Sie das klären, die "nach" - Teil?
Nachdem heißt, nachdem Sie es war-Datenbindung auf der gleichen Seite des Lebens-Zyklus (also bis Unload).
die ursprüngliche DataItem schien der logischste Weg, um herauszufinden, welche Felder sich geändert hat. Du sagst also ich kann das GridView binden Sie in die click-Funktion?
Nein, Sie können Sie binden das GridView. Dann würden Sie überschreiben alle änderungen und verhindert, dass Ereignisse, die ausgelöst wird. Sie müssen die Auswertung der Kontrollen oder verwenden Sie die GridView RowUpdating - Ereignis mit seiner OldValues und NewValues Eigenschaften.

InformationsquelleAutor TheGerm | 2012-11-08

Schreibe einen Kommentar