2011-12-05 82 views
1

我对这个问题深感不安,希望各种帮助!我必须创建一个页面,用户可以通过单击按钮添加更多行。例如,我有第一行有两个文本框(名称和出生日期),第二行带有“添加行”按钮。当用户点击“添加行”按钮时,第一行应该被克隆和重复...但用户不能添加超过5行。后来所有的信息都需要保存在SQL表中。在C#中如何实现这一点?只需点击一下按钮即可添加文本框行

我附加我的示例ASP.NET。谁能帮帮我吗?

PS:我已阅读并尝试过“如何:将行和单元格动态添加到表Web服务器控件”......但这不适用于我。

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Testing Adding Rows</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div>  
     <asp:Table ID="Table1" runat="server" width="400" style="border:[none][0]; border-color:White; border-style:hidden">     
      <asp:TableRow ID="TableRow1" runat="server"> 
       <asp:TableCell runat="server" nowrap="nowrap" Width= "70"> 
        <asp:Label ID="nameLabel" runat="server" Text="Your Name" Font-Size="X-Small"></asp:Label> 
       </asp:TableCell> 
       <asp:TableCell runat="server" nowrap="nowrap" Width= "100"> 
        <asp:TextBox ID="tb_name" runat="server" Font-Size="Smaller"></asp:TextBox> 
        <asp:RequiredFieldValidator ID="nameValidator" runat="server" ControlToValidate="tb_name" Font-Size="Smaller">*</asp:RequiredFieldValidator> 
       </asp:TableCell> 

       <asp:TableCell runat="server" nowrap="nowrap" Width= "70"> 
        <asp:Label ID="dateLabel" runat="server" Text="Birthdate" Font-Size="Smaller" ></asp:Label> 
       </asp:TableCell>       
       <asp:TableCell runat="server" Width= "100"> 
        <asp:TextBox ID="tb_date" runat="server" Font-Size="Smaller"></asp:TextBox> 
        <asp:RequiredFieldValidator ID="dateValidator" runat="server" ControlToValidate="tb_date" Font-Size="Smaller">*</asp:RequiredFieldValidator> 
       </asp:TableCell> 

      </asp:TableRow> 


      <asp:TableRow ID="TableRow2" runat="server"> 
       <asp:TableCell runat="server" align="left" Width= "100"> 
        <asp:Button ID="addRow" runat="server" Height="22px" Text="Add Row" 
           ToolTip="Click to add another row" onclick="ButtonAddRow_Click" /> 
       </asp:TableCell> 
      </asp:TableRow> 


      <asp:TableRow ID="TableRow3" runat="server"> 
       <asp:TableCell runat="server" bordercolor="#FFFFFF"> </asp:TableCell> 

       <asp:TableCell runat="server" align="left" nowrap="nowrap" bordercolor="#FFFFFF"> 
        <asp:Label ID="msg" runat="server" ForeColor="Red" Font-Size="Smaller"></asp:Label> 
        <asp:ValidationSummary ID="LogonValidationSummary" HeaderText="All the fields (*) are required." DisplayMode="SingleParagraph" 
              Font-Italic="true" ShowSummary="True" EnableClientScript="true" runat="server" Font-Size="Smaller"/> 
       </asp:TableCell> 
      </asp:TableRow> 

      <asp:TableRow ID="TableRow4" runat="server"> 
       <asp:TableCell ID="TableCell10" runat="server" bordercolor="#FFFFFF">  </asp:TableCell> 

       <asp:TableCell ID="TableCell11" runat="server" align="left" bordercolor="#FFFFFF"> 
        <asp:Button ID="ButtonSubmit" runat="server" Height="22px" Text="Submit" Width="79px" onclick="ButtonSubmit_Click" /> 
       </asp:TableCell> 
      </asp:TableRow> 

     </asp:Table>  
    </div> 
    </form> 
</body> 
</html> 
+0

@Pranay是的,我一定会做到这一点。顺便说一句,喜欢你使用GridView控件的想法,我会尝试一下。 – AlwaysANovice

+0

谢谢大家的帮助!然而,我仍然坚持我将不得不从行中收集所有信息并将它们保存到SQL表的任何部分,任何人都可以请帮助我吗? – AlwaysANovice

回答

0

我想如果您使用GridView控件,而不是将行运行时添加到gridview而不是使用表。这样可以减少代码的工作量。

这里是代码你:Adding Dynamic Rows in GridView with TextBoxes enter image description here

+0

谢谢,现在至少它正确地克隆了第一行。但是,我仍然坚持如何从行中收集所有信息并将它们保存到SQL表中,任何建议plz? – AlwaysANovice

+0

是的,你可以读取数据将其放入一个xaml,并且可以使用openxaml插入批量数据 –

1

这个代码片断仅仅是一个暗示,你可以做这样..

TableRow row = new TableRow(); 
    for (int j = 0; j < colsCount; j++) 
    { 
     TableCell cell = new TableCell(); 
     TextBox tb = new TextBox(); 
      tb.ID = "TextBoxRow_" + i + "Col_" + j; 
      cell.Controls.Add(tb); 
      row.Cells.Add(cell); 
     } 

    Table1.Rows.Add(row); 
+0

感谢您的快速回复。不过,正如我已经提到,我从MSDN页面尝试这一个,并没有做我正在寻找的东西(单击ADD ROW按钮一次后,这会产生并显示所有5行一次...而我想一次添加一行)。不管怎么说,还是要谢谢你!! – AlwaysANovice

+0

所以,你可以在按钮点击事件中调用它,是否有任何问题? – FosterZ

+0

是的,我确实如何显示在这里:http://msdn.microsoft.com/en-us/library/7bewx260.aspx但这给我不同的输出比我期待的。哦,在尝试这个时,我确实在内循环之后移动了“Table1.Rows.Add(tRow)”行。 – AlwaysANovice

相关问题