2008-11-08 101 views
0

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

什么是一个“推荐”的方式来实现这一目标?有了一个中继器,我假设我必须在回发中循环表单值,并且使用gridview控件,我必须重写onrowdatabound和Postback其他方法。

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

回答

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; 
    } 
} 
+0

谢谢 - 所以GridView就是您使用的,显然。我只是想知道。我已经使用了两种解决方案,但从未满意。 – 2008-11-08 21:47:37