0

我有一个项目列表,以便在 asp.net 中显示——每个项目(行)将有 3 个文本框,因此用户可以查看和更改该数据(运输成本、处理成本、价格)。

实现此目的的一种“推荐”方式是什么?使用转发器,我假设我必须在回发时遍历表单值,并且使用 gridview 控件我必须覆盖 onrowdatabound 和回发一些其他方法。

我相信两者都可以,但是作为开发人员,您在这种情况下会选择什么?

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 回答