【问题标题】:Editable Datagrid? Repeater?可编辑的数据网格?中继器?
【发布时间】:2008-11-08 18:24:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: asp.net gridview repeater


    【解决方案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;
        }
    }
    

    【讨论】:

    • 谢谢 - 所以 GridView 显然是你使用的。我只是想知道。我都用过,但对任何一种解决方案都不满意。
    • 我想我确实喜欢 gridview 方法,因为这样你就可以为你的字段提供健全的 id,而不是一些奇怪的“recid|field”名称。 Findcontrol 消除了这种情况,因为您的范围仅限于该特定行。谢谢马特。
    猜你喜欢
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 2011-08-13
    • 2018-07-01
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多