Frage

Ich habe eine Liste von Elementen in einer Bestellung, um in ASP.NET anzuzeigen - jedes Element (Zeile) verfügt über 3 Textboxen, sodass der Benutzer dieses Datenstück sowohl anzeigen als auch ändern kann (Versandkosten, Kosten, Preis).

Was wäre eine "empfohlene" Weg, um dies zu erreichen? Mit einem Repeater gehe ich davon aus, dass ich dann die Formularwerte auf Postback durchlaufen muss, und mit einer Gridview -Steuerung müsste ich onrowdatabound und nach Postback eine andere Methode überschreiben.

Ich bin mir sicher, dass beide funktionieren würden, aber was wählen Sie als Entwickler in dieser Situation?

War es hilfreich?

Lösung

Was ich in der Vergangenheit getan habe, ist die Verwendung von datengebundenen Gridview-Templatecolumns:

<asp:GridView runat="server" ID="grdRoster" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField HeaderText="First Name">
            <ItemTemplate>
                <asp:TextBox runat="server" ID="txtFirstName" Columns="10" Text='<%# Eval("RosterFirstName") %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Middle Name">
            <ItemTemplate>
                <asp:TextBox runat="server" ID="txtMiddleName" Columns="10" Text='<%# Eval("RosterMiddleName") %>' />
            </ItemTemplate>
        </asp:TemplateField>                       
        <asp:TemplateField HeaderText="Last Name">
            <ItemTemplate>
                <asp:TextBox runat="server" ID="txtLastName" Columns="10" Text='<%# Eval("RosterLastName") %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

Wenn Sie dann nach Postback (z. B. eine "Speichern" -Kaste klicken) können Sie die Zeilen in der Gridview durchlaufen und die Werte aus den Textboxen herausholen:

foreach ( GridViewRow row in grdRoster.Rows )
{
    if ( row.RowType == DataControlRowType.DataRow )
    {
        string firstName = ( ( TextBox ) row.FindControl( "txtRosterFirstName" ) ).Text;
        string middleName = ( ( TextBox ) row.FindControl( "txtRosterMiddleName" ) ).Text;
        string lastName = ( ( TextBox ) row.FindControl( "txtRosterLastName" ) ).Text;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top