3 Stimmen

Mehrere Zeilen eines Gridviews in den Bearbeitungsmodus versetzen

Ich habe die Notwendigkeit, einen Benutzer zu ermöglichen, um "Tab durch" machen Bearbeitungen auf eine Gridview. Es wird eine bearbeitbare Spalte in den Zeilendaten geben. Der Benutzer sollte in der Lage sein, die Tabulatortaste zu drücken und in die nächste Zeile zu gehen, um die Spalte zu bearbeiten.

Ich habe keine einfache Methode gefunden, um diese Aufgabe zu bewältigen. Ich fand einen Weg, um programmgesteuert eine Gridview in den Bearbeitungsmodus zu setzen, aber beim Testen des Codes unten funktioniert es nur für 1 Zeile zu einer Zeit.

        reviewTransferGV.EditIndex = 0;
        reviewTransferGV.Rows[0].RowState = DataControlRowState.Edit;
        reviewTransferGV.EditIndex = 1;
        reviewTransferGV.Rows[1].RowState = DataControlRowState.Edit;
        reviewTransferGV.DataBind();

10voto

jpiolho Punkte 1182

Ich habe eine Abhilfe geschaffen, indem ich eine Eigenschaft auf der Seite erstellt habe:

protected bool IsEditMode
{
  get { return this.EditMode; }
  set { this.EditMode = value; }
}

Dann habe ich in der GridView die Steuerelemente für den Ansichts- und Bearbeitungsmodus innerhalb einer Elementvorlage. Einstellung der Sichtbarkeit basierend auf dem Eigenschaftswert:

<asp:TemplateField SortExpression="Status" HeaderText="Status">
<ItemTemplate>
    <asp:Label Id="lblStatus" Text='<%# Eval("Status") %>' Visible='<%# !IsEditMode %>' runat="server" />
    <asp:TextBox ID="txtStatus" Text='<%# Eval("Status") %>' Visible='<%# IsEditMode %>' runat="server" />
</ItemTemplate>

Dies funktioniert für die Bearbeitung des gesamten Gridviews. Sie müssen wahrscheinlich ein paar Änderungen vornehmen, damit es für einzelne Zeilen funktioniert.

0 Stimmen

Funktioniert wie ein Zauber. Interessanterweise kann dieser kleine Trick auch verwendet werden, um Spaltendaten zu erfassen, die Sie nicht anzeigen möchten. Wenn Sie z.B. Visible=False für ein Boundfield einstellen, können Sie den Wert Text in Codebehind nicht erreichen, aber wenn Sie ein Templatefield verwenden und das TemplateField visible=false einstellen, können Sie trotzdem den Wert "lblStatus" Text erreichen und lblStatus wird nicht angezeigt.

0 Stimmen

Hallo, @P.Brian.Mackey wo die Eigenschaft zu setzen? können Sie bitte teilen Code?

0voto

John Bledsoe Punkte 16242

Ich glaube nicht, dass es für ein GridView möglich ist, mehrere Zeilen gleichzeitig im Bearbeitungsmodus zu haben. Wenn Sie mehrere Zeilen bearbeiten wollen, müssen Sie einen eigenen Mechanismus dafür entwickeln.

0 Stimmen

Ich irgendwie herausgefunden, dass, haben Sie irgendwelche Vorschläge, wo zu beginnen, meine eigene Kontrolle/erweitern gridview zu tun? Ich überfliege grundlegende Kontrolle Gebäude in einem Wrox Buch in der Hoffnung, dass die Antwort dort sein wird.

0voto

IFink Punkte 696

Ein weiterer Punkt ist die Speicherung der Ergebnisse in der DataBase. Während wir im normalen Gebrauch einfach den Aktualisierungsbefehl aufrufen, der die Arbeit erledigt, gibt es im ItemTemplate jetzt eine Aktualisierungsschaltfläche. Also füge ich eine Schaltfläche außerhalb des GridViews hinzu und rufe im Handler die UpdateRow-Methode manuell für jede Zeile auf.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X