c#动态循环TextBox问题,望高手之路!!
前台主要实现程序:
<asp:Panel ID="Panel1" runat="server" Width="105px"> </asp:Panel> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
string a = ",序号,车号,姓名,联系方式"; string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None); for (int i = 1; i <= 3; i++) { TextBox txt = new TextBox(); txt.ID = "TextBox" + i.ToString(); //txt.top = i * 20; Panel1.Controls.Add(txt); ((Label)this.FindControl("label" + i)).Text = s[i]; }<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><input name="TextBox1" type="text" id="TextBox1" /><br><asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><input name="TextBox2" type="text" id="TextBox1" /><br><asp:Label ID="Label3" runat="server" Text="Label"></asp:Label><input name="TextBox3" type="text" id="TextBox1" /><br>
string a = ",序号,车号,姓名,联系方式"; string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None); for (int i = 1; i <= 3; i++) { Label lb = new Label(); lb.ID = "Label" + i.ToString(); TextBox txt = new TextBox(); txt.ID = "TextBox" + i.ToString(); lb.Text = "<br />"+s[i]; Panel1.Controls.Add(lb); Panel1.Controls.Add(txt); }
[解决办法]
通过后台编程的方式可以直接实现。
以下为前台
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
[解决办法]
另外,不建议使用后台编程方式实现,除非前台结构不确定。
[解决办法]
怎么感觉拉的比你生产的快吧。。
要不做个表把TextBox放repeater里面绑定上。。。
[解决办法]
string a = ",序号,车号,姓名,联系方式";
string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None);
for (int i = 1; i <= 3; i++) {
TextBox txt = new TextBox();
txt.ID = "TextBox" + i.ToString(); //txt.top = i * 20;
Label la = new Label();
la.Text = s[i];
Panel1.Controls.Add(la);
Panel1.Controls.Add(txt);
Panel1.Controls.Add(new HtmlGenericControl("br"));
}
------解决方案--------------------
<%@ Page Language="C#" Debug="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
string a = ",序号,车号,姓名,联系方式";
string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None);
for (int i = 1; i <= 3; i++)
{
TextBox txt = new TextBox();
txt.ID = "TextBox" + i.ToString(); //txt.top = i * 20;
Label la = new Label();
la.Text = s[i];
Literal lt = new Literal();
lt.Text = "<br/>";
Panel1.Controls.Add(la);
Panel1.Controls.Add(txt);
Panel1.Controls.Add(lt);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
</form>
</body>
</html>
[解决办法]
string a = ",序号,车号,姓名,联系方式";
string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None);
for (int i = 1; i <= 3; i++)
{
Label l = new Label();
TextBox txt = new TextBox();
txt.ID = "TextBox" + i;
l.ID="label"+i;
l.Text = s[i];
Panel1.Controls.Add(l);
Panel1.Controls.Add(txt);
Panel1.Controls.Add(new HtmlGenericControl("br"));
}
[解决办法]
string a = ",序号,车号,姓名,联系方式"; string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None); for (int i = 1; i <= 3; i++) { TextBox txt = new TextBox(); txt.ID = "TextBox" + i; txt.Text = i.ToString(); Label lbl = new Label(); lbl.ID = "lbl" + i; lbl.Text = "lbl" + i; Panel1.Controls.Add( lbl); Panel1.Controls.Add(txt); Literal li = new Literal(); li.Text = "<br/>"; Panel1.Controls.Add(li); }
[解决办法]
完全按照
<asp:Panel ID="Panel1" runat="server" Width="105px">
</asp:Panel>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
这样的代码结构的做法
<%@ Page Language="C#" Debug="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"> protected void Page_Load(object sender, EventArgs e) { string a = ",序号,车号,姓名,联系方式"; string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None); for (int i = 1; i <= 3; i++) { TextBox txt = new TextBox(); txt.Text = s[i]; txt.ID = "TextBox" + i.ToString(); //txt.top = i * 20; Label la = ((Label)this.FindControl("label" + i)); la.Text = s[i]; Literal lt = new Literal(); lt.Text = "<br/>"; int il = GetControlIndex(la) + 1; form1.Controls.AddAt(il, lt); form1.Controls.AddAt(il, txt); } } private int GetControlIndex(Label l) { for (int i = 0; i < form1.Controls.Count; i++) { if (form1.Controls[i].ID == l.ID) return i; } return 0; }</script><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <asp:Panel ID="Panel1" runat="server" Width="105px"> </asp:Panel> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label> </form></body></html>