0

asp.netに表示するアイテムのリストがあります-各アイテム(行)には3つのテキストボックスがあり、ユーザーはそのデータ(送料、手数料、価格)を表示および変更できます。

これを達成するための「推奨される」方法は何でしょうか? リピーターを使用すると、ポストバックでフォームの値をループする必要があり、gridview コントロールを使用すると、onrowdatabound をオーバーライドし、Postback で他のメソッドをオーバーライドする必要があると思います。

どちらもうまくいくと思いますが、この状況で開発者として何を選択しますか?

4

1 に答える 1

1

私が過去に行ったことは、データ バインドされた 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>

次に、ポストバック (たとえば、[保存] ボタンのクリック) で、GridView 内の行をループして、テキスト ボックスから値を取り出すことができます。

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;
    }
}
于 2008-11-08T20:39:29.253 に答える