Um Daten im DataGrid-Steuerelement zu bearbeiten, verwenden Sie bitte die Spalte „Bearbeiten, Aktualisieren, Abbrechen“ in der „Schaltflächenspalte“. Diese können als DataGrid-Steuerelement im Eigenschaftengenerator des
DataGrid-Steuerelements festgelegt werden (nehmen Sie den Steuerelementnamen dg1 als Beispiel ), wird es eine weitere Spalte im dg1-Steuerelement auf der Seite geben. Jedes Element in dieser Spalte ist ein LinkButton/Button mit dem Text „Edit“.
Wenn Sie auf die Schaltfläche „Bearbeiten“ einer Zeile klicken, befindet sich die Zeile im Bearbeitungsmodus, die Schaltfläche „Bearbeiten“ wird durch die Schaltflächen „Aktualisieren“ und „Abbrechen“ ersetzt und alle anderen nicht schreibgeschützten Datenhilfsspalten in der Die Zeile wird in ein TextBox-Steuerelementformat geändert, damit Benutzer sie bearbeiten und ändern können.
Wenn der Benutzer die Daten der nicht schreibgeschützten Datenspalte (im TextBox-Steuerelement) ändert, auf die Schaltfläche „Aktualisieren“ klickt, den neuen Wert speichert (normalerweise in der Datenbank), auf die Schaltfläche „Abbrechen“ klickt, wird die Zeile beendet Bearbeitungsmodus.
Um den Effekt des Umschaltens in den Zeilenbearbeitungsmodus durch Klicken auf die Schaltfläche „Bearbeiten“ zu erzielen, muss die EditCommand-Ereignisbehandlungsmethode von dg1 geschrieben werden. Um den Effekt des Speicherns des neuen Werts durch Klicken auf die Schaltfläche „Aktualisieren“ zu erzielen, muss Die UpdateCommand-Ereignisbehandlungsmethode von dg1 muss geschrieben werden. Um auf die Schaltfläche „Abbrechen“ zu klicken, um den Zeilenbearbeitungsmodus zu verlassen, müssen Sie die CancelCommand-Ereignisbehandlungsmethode von dg1 bearbeiten.
1) dg1.EditCommand-Ereignisbehandlungsmethode – Geben Sie die Zeilenbearbeitung ein Modus
-------------------------------------------------- ----
private void dg1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dg1.EditItemIndex = e.Item.ItemIndex; //Legen Sie den Index des zu bearbeitenden Elements fest
binddg1(); //Methode zum Binden von Daten an dg1. Nachdem das zu bearbeitende Element festgelegt wurde, muss dg1 erneut gebunden werden
}
-------------------------------------------------- -------
2) dg1.CancelCommand-Ereignisbehandlungsmethode – Zeilenbearbeitungsmodus verlassen
-------------------------------------------------- -------
private void dg_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dg1.EditItemIndex = e.Item.ItemIndex; //Der Index des bearbeiteten Elements ist -1, was bedeutet, dass kein Element bearbeitet wird.
binddg1(); //Nach dem Zurücksetzen von EditItemIndex muss dg1 erneut gebunden werden
}
-------------------------------------------------- -------
3) dg1.UpdateCommand-Ereignisbehandlungsmethode – Aktualisierte Werte speichern Um aktualisierte Werte zu speichern, müssen Sie diese neuen Werte zunächst von der Seite abrufen. In der Ereignisverarbeitungsmethode müssen drei Hauptfunktionen implementiert werden:
Rufen Sie aktualisierte Werte ab, aktualisieren Sie diese Werte und beenden Sie den Zeilenaktualisierungsmodus.
Im Allgemeinen werden die im DataGrid-Steuerelement angezeigten Daten aus der Datenbanktabelle abgerufen, daher muss der aktualisierte Wert auch in der Datenbank gespeichert werden. Sie können die Aktualisierung mit einer Update-SQL-Anweisung oder einer gespeicherten Prozedur durchführen.
Um die Spaltenwerte einer Seite im Bearbeitungsmodus zeilenweise abzurufen, sind einige Tricks erforderlich. Nehmen Sie als Beispiel Bindungsspalten:
Rufen Sie den Wert einer schreibgeschützten gebundenen Spalte ab: e.Item.Cells[Spaltenindex].Text //Die schreibgeschützte Hilfespalte befindet sich in einem nicht bearbeitbaren Zustand. Rufen Sie den Wert einer nicht schreibgeschützten gebundenen Spalte ab: ((TextBox)(e.Item. Cells[Column Index].Controls[0])).Text //Im Bearbeitungszustand
ist die schreibgeschützte Hilfespalte normalerweise die Primärschlüsselspalte in der Tabelle. Ihr Spaltenwert sollte sein werden in der where-Klausel der update-Anweisung verwendet. Im Allgemeinen werden sie nicht aktualisiert
.
-------------------------------------------------- --------
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//Schreibgeschützt gebundene Spalte, im nicht bearbeitbaren Zustand
string customerid = e.Item.Cells[1].Text;
//Nicht schreibgeschützte gebundene Spalte, im Bearbeitungsstatus
string firmenname = ((TextBox)(e.Item.Cells[2].Controls[0])).Text;
string city = ((TextBox)(e.Item.Cells[3].Controls[0])).Text;
String strSql = "update customer set firmenname = '" + firmenname +
"',city = '" + city + "' where customerid = '" + customerid + "'";
executeSql(strSql); //Führen Sie die Update-Anweisung aus, um
DataGrid1.EditItemIndex = -1 zu aktualisieren; //Beenden Sie den Zeilenbearbeitungsmodus
binddg1();
}