本帖最后由 love560 于 2011-01-12 14:27:56 编辑

解决方案 »

  1.   

            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);
            }
      

  2.   

    通过后台编程的方式可以直接实现。
    以下为前台
    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    以下为后台textbox tb = new textbox()
    PlaceHolder1.controls.add(tb);
    思路就是这样。
    PlaceHolder 控件为一个空的容器,可以通过后台方式为它附加其它控件。
      

  3.   


    前台确定,但是前台的 TextBox 这个超多,所有不用生成,前台要拉很多TextBox ,麻烦的很!
      

  4.   

    怎么感觉拉的比你生产的快吧。。
    要不做个表把TextBox放repeater里面绑定上
      

  5.   

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

  6.   

    <%@ 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>
      

  7.   

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

  8.   


    Literal liter = new Literal();
            liter.Text = "<br />";
            Panel1.Controls.Add(liter);
      

  9.   


     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);
                }
      

  10.   

    完全按照
    <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>
      

  11.   

    如果你非要这样实现 那么建议你采用 asp:table控件 每一行设置两列 一个放你的lable一个就是textbox 完了之后添加新行
      

  12.   

    后台codestring a = ",序号,车号,姓名,联系方式";
                string[] s = a.Split(new string[1] { "," }, System.StringSplitOptions.None);
                int iRows = s.Length;
                for (int i = 0; i <iRows; i++)
                {
                    TableRow tr = new TableRow();                for (int j = 0; j < 2; j++)
                    {
                        TableCell tc = new TableCell();
                        if (j == 0)
                        {
                            Label la = new Label();
                            la.Text = s[i];
                            tc.Controls.Add(la);
                            tr.Cells.Add(tc);
                        }
                        if (j == 1)
                        {
                            TextBox txt = new TextBox();
                            tc.Controls.Add(txt);
                            tr.Cells.Add(tc);
                        }
                        tbContent.Rows.Add(tr);
                    }
                }
    前台code
     <div>
            <asp:Table ID="tbContent" runat="server">
            
            </asp:Table>
        </div>
      

  13.   


    呀!高手就是多呀,问下这样实现代码怎么写呀?就是你说的怎么一行设置两列呀?
    还有个问题就是 我想控制下textbox的高,怎么设置呀?
      

  14.   


    TextBox txt = new TextBox();
    txt.Height = "111px;";
    这样写为啥不对呀?
      

  15.   

    我还是不建议使用Tabel控件,表格不是用来布局的,一旦使用,你会发现界面会比较凌乱,布局还是采用DIV形式。最好还是用我的方法或者1楼的方法,用control.addat将用编程方式添加。
      

  16.   


    出错了
    CS0029: 无法将类型“string”隐式转换为“System.Web.UI.WebControls.Unit”
     行 58:                 {
    行 59:                     TextBox txt = new TextBox();
    行 60:                     txt.Height = "111";//这个错误!
    行 61:                     tc.Controls.Add(txt);
    行 62:                     tr.Cells.Add(tc);
     不知道怎么写了!
      

  17.   


    受不了你了,不用写双引号。
        //private void BindPhoto()
        //{
        //    x_ExamRoom examroom = new x_ExamRoom();
        //    DataTable dt = examroom.GetExamAddressAllStudentList(yearTermID, examWeek, weekSection, roomID);
        //    StringBuilder header = new StringBuilder();
        //    header.Append("<h2>考试地点学生名单(所有课程)</h2>");
        //    header.Append("<h3>考试地点:" + roomID);
        //    header.Append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
        //    header.Append("监考1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
        //    header.Append("监考2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
        //    header.Append("考试时间:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</h3>");
        //    int pagenum = 30;   //每页30人
        //    int rownum = 6;     //每行6人
        //    int page = (dt.Rows.Count%pagenum == 0)? dt.Rows.Count / pagenum : dt.Rows.Count / pagenum +1;
        //    for (int j = 1; j <= page ; j++)   //设置分页
        //    {
        //        Literal lblTitle = new Literal();
        //        lblTitle.Text = header.ToString();
        //        PlaceHolder1.Controls.Add(lblTitle);
        //        int currentPageNum = (j * pagenum <= dt.Rows.Count) ? pagenum : (dt.Rows.Count - j * pagenum);  //获得当前页记录数
        //        int row = (currentPageNum % rownum == 0) ? currentPageNum / rownum : currentPageNum / rownum + 1;        //获得当前页行数
        //        for (int i = 0; i < row; i++)
        //        {
                    
        //            for (int s = 0; s < 6; s++)
        //            {
        //                Image imageurl = new Image();
        //                Literal lbControl = new Literal();
        //                lbControl.Text = "<div style='float:left;height:190px;width:130px;'>";
        //                imageurl.ImageUrl = @"../Student/jpg.aspx?StudID=" + Encrypt.EncryptDES(dt.Rows[s+i*rownum+(j - 1) * pagenum]["StudID"].ToString());
        //                imageurl.Width = 100 ;
        //                imageurl.Height = 140;
        //                Literal lbControlEnd = new Literal();
        //                StringBuilder studinfo = new StringBuilder();
        //                studinfo.Append(@"<div>");
        //                studinfo.Append(dt.Rows[s + i * rownum + (j - 1) * pagenum]["StudID"].ToString());
        //                studinfo.Append("&nbsp;&nbsp;" + dt.Rows[s + i * rownum + (j - 1) * pagenum]["StudName"].ToString());
        //                studinfo.Append(@"</div></div>");
        //                lbControlEnd.Text = studinfo.ToString();
        //                PlaceHolder1.Controls.Add(lbControl);
        //                PlaceHolder1.Controls.Add(imageurl);
        //                PlaceHolder1.Controls.Add(lbControlEnd);
        //            }
        //            Literal lbBR = new Literal();
        //            lbBR.Text = @"<br />";
        //            PlaceHolder1.Controls.Add(lbBR);
        //        }
        //        if (j != page)
        //        {
        //            Literal lbPage = new Literal();
        //            lbPage.Text = @"<div style='visibility:hidden;clear:left;'><p class='PageNext'></p></div>";
        //            PlaceHolder1.Controls.Add(lbPage);
        //        }
        //    }    //}
      

  18.   

    imageurl.Width = 100 ;
    imageurl.Height = 140;
    这里设置高宽。
      

  19.   

    PlaceHolder1.Controls.Add(lbControl);
    PlaceHolder1.Controls.Add(imageurl);
    PlaceHolder1.Controls.Add(lbControlEnd);这里是向控件中添加控件的,就是后台编程添加控件
      

  20.   

    你可以在大Panel里先加三个小Panel,然后每个小Panel里面,分别加入一个Label和一个TextBox
    Panel与Panel之间是会自动换行的
      

  21.   

    此贴不错,顶了。如果使用Input,而不是textbox的话,可以用request.form[""]这个也能实现。
      

  22.   

    追问:如果想要点击提交按钮后获取这些在后台添加的textbox 的Text,如何实现?