2008-11-08 137 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