读书人

c#动态循环TextBox有关问题望高手之

发布时间: 2012-09-09 09:27:54 作者: rapoo

c#动态循环TextBox问题,望高手之路!!
前台主要实现程序:

C# code
        <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> 


后台代码:
C# code
        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];        }


我现在想问的是,如何自动生成前台的label,并且加在TextBox 的前面?然后在每个TextBox后面加个换行,最终显示方式如下:
C# code
<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>


希望高手指点哈!100分就这点了!
还有 就是有没有更好的实现方式呀?小弟不胜感谢!

[解决办法]
C# code
        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);        }
[解决办法]
通过后台编程的方式可以直接实现。
以下为前台

C# code
<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"));
}




[解决办法]

C# code
 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>
这样的代码结构的做法
HTML code
<%@ 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> 

读书人网 >asp.net

热点推荐