现在页面上已经有一个table,包含两个行tr1和tr2,现要在每个行中要动态生成若干个单元格,每个单元格中动态生成一个控件LinkButton;现希望实现当LinkButton的数量<6时,生成的单元格在tr1行中,当>=6时生成控件在tr2行中,曾尝试多次均失败,请问各位高手能否指点一下,其相关代码如下:     cmd = new SqlCommand("select TagName from Blog_MySubject where  ReaderID='"+name+"' order by TagID desc ",conn);
        conn.Open();
        DataSet ds = new DataSet();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(ds);
        conn.Close();
        int index=0;
     //---------------------------------acquire Blog_MySubject------------------------------------//
       // while (index <= 10)
      // {
     //  if (index % 2 == 0)
     //  {                HtmlTableRow mytr1 = new HtmlTableRow();
                TagRow.Rows.Add(mytr1);
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    string tagstr = row["TagName"].ToString();
                    create_button(tagstr, index, mytr1);
                    index++;                }
    //        }
           /* else
            {
                HtmlTableRow mytr2 = new HtmlTableRow();
                TagRow.Rows.Add(mytr2);
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    string tagstr = row["TagName"].ToString();
                    create_button(tagstr, index, mytr2);
                    index++;
                }            }*/  
        //}
 }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void create_button(string tagname,int i,HtmlTableRow tr)
    {
        HtmlTableCell td = new HtmlTableCell();
        tr.Cells.Add(td);
        td.Align = "left";
        LinkButton lbt = new LinkButton();
        lbt.ID = "lbt"+i;
        lbt.Text = tagname;
        td.Controls.Add(lbt);
        string teststr = lbt.ID;
        if(i==0)
        {
          lbt.CommandName = "onclick0"; lbt.Click += new System.EventHandler(this.lbt0_click);
        }        if(i==1)
        {
            lbt.CommandName = "onclick1";
            lbt.Click+=new System.EventHandler(this.lbt1_click);
                               
        }
        if(i== 2)
        {
           lbt.CommandName = "onclick2";
           lbt.Click+=new System.EventHandler(this.lbt2_click);
        }
        if(i==3)
        {
         lbt.CommandName = "onclick3";
         lbt.Click += new System.EventHandler(this.lbt3_click);
        }
        if(i==4)  
        {
          lbt.CommandName = "onclick4";
          lbt.Click += new System.EventHandler(this.lbt4_click);
        }
        if(i==5)
        {
          lbt.CommandName = "onclick5";
          lbt.Click+=new System.EventHandler(this.lbt5_click);
        }
        if(i==6)
        {
          lbt.CommandName = "onclick6";
          lbt.Click+=new System.EventHandler(this.lbt6_click);
         }
         if (i == 7)
         {
             lbt.CommandName = "onclick7";
             lbt.Click+=new System.EventHandler(this.lbt7_click);
         }
     }

解决方案 »

  1.   

    protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection(@"server=.\sqlexpress;uid=sa;pwd=;database=northwind");
    //    cmd = new SqlCommand("select TagName from Blog_MySubject where  ReaderID='" + name + "' order by TagID desc ", conn);
        SqlDataAdapter da = new SqlDataAdapter("select productName as TagName from Products", conn);
        DataSet ds = new DataSet();
        conn.Open();
        
        da.Fill(ds);
        conn.Close();
        int index = 0;    HtmlTableRow mytr1 = new HtmlTableRow();
        foreach (DataRow row in ds.Tables[0].Rows)
        {
            string tagstr = row["TagName"].ToString();
            create_button(tagstr, index, mytr1);
            index++;
            if (index > 5)
                break;
        }
        
        HtmlTableRow mytr2 = new HtmlTableRow(); 
        foreach (DataRow row in ds.Tables[0].Rows) 
        { 
          string tagstr = row["TagName"].ToString(); 
          create_button(tagstr, index, mytr2); 
          index++;
          if (index > 11)
              break;
        } 
        TagRow.Rows.Add(mytr1);
        TagRow.Rows.Add(mytr2); }public void create_button(string tagname, int i, HtmlTableRow tr)
    {  
        LinkButton lbt = new LinkButton();
        lbt.ID = "lbt" + i;
        lbt.Text = tagname;
        lbt.CommandName = "onclick" + i.ToString();
        lbt.Click += new EventHandler(lbt_Click);    HtmlTableCell td = new HtmlTableCell();
        td.Controls.Add(lbt);
        td.Align = "left";
        tr.Cells.Add(td);
    }void lbt_Click(object sender, EventArgs e)
    {
        Response.Write((sender as LinkButton).CommandName);
    }
      

  2.   

    foreach (DataRow row in ds.Tables[0].Rows)
    foreach( DataCell column in row.Cells ) //行中的每个元素 
    foreach(DataColumn dc in dr.Table.Columns) 
      

  3.   

    楼主的程序中只实例了一个linkbutton,肯定是不行的了.
      

  4.   


    已经试过了,两行创建的LinkButton完全相同,即数据库中的字段,只有1-6被显示出来。
      

  5.   

    那你用FOR语句控制行记录好了,你如果不知道原因,那就太搞笑了.
    foreach (DataRow row in ds.Tables[0].Rows) ///因为两次循环迭代都是从初始记录0行开始读的,
    你改成FOR语句控制循环,和初始行索引值.