我在asp.net中显示了一个项目列表 - 每个项目(行)将有3个文本框,因此用户可以查看和更改该数据(运费,处理成本,价)。
实现这一目标的“推荐”方法是什么?使用转发器,我假设我必须在回发时循环遍历表单值,并且使用gridview控件我必须覆盖onrowdatabound并在Postback上使用其他方法。
我确信两者都有效,但作为开发者,您在这种情况下选择了什么?
答案 0 :(得分: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;
}
}