从下拉列表中为td表分配值

时间:2012-04-09 10:48:09

标签: c# asp.net

我在asp页面的循环中创建一个表,如下所示:

   foreach (ListItem item in check.Items)
            {
                if (item.Selected)
                {

                    DropDownList drop = new DropDownList();

                    drop.Items.Add("1");
                    drop.Items.Add("2");

                    drop.DataValueField = "1";
                    drop.DataValueField = "2";





                    TableRow row = new TableRow();
                    TableCell celula = new TableCell();
                    celula.Style.Add("width", "200px");
                    celula.Style.Add("background-color", "red");

                    celula.RowSpan = 2;
                    celula.Text = item.Value;
                    TableCell celula1 = new TableCell();
                    celula1.Style.Add("background-color", "green");
                    celula1.Style.Add("width", "200px");

                    celula1.RowSpan = 2;

                    TableCell celula2 = new TableCell();
                    celula2.Style.Add("width", "200px");
                    celula2.Style.Add("background-color", "blue");
                    celula2.Text = "unu";
                    TableRow row1 = new TableRow();
                    TableCell cel = new TableCell();
                    cel.Text = "lalala";
                    cel.Style.Add("background-color", "brown");




                    celula1.Controls.Add(drop);
                    row.Cells.Add(celula);
                    row.Cells.Add(celula1);
                    row.Cells.Add(celula2);
                    row1.Cells.Add(cel);
                    this.tabel.Rows.Add(row);
                    this.tabel.Rows.Add(row1);



                }
            }

对于我检查的每个值,创建一个新行,其中包含checked复选框的值,下拉列表和另外2个单元格。现在我想要为我创建的每个下拉列表制作一些东西。所以如果我为第一行选择1会出现一些东西,如果我为另一行选择1则会出现其他东西。我做了一个selectedindexchanged但如果我从第一行选择1,它将显示两行。我如何单独引用我在循环中创建的每个下拉列表?我正在使用带有c#

的Asp.Net Web应用程序

1 个答案:

答案 0 :(得分:0)

修改您的代码,如下所示。

protected void Page_Load(object sender, EventArgs e)
{        
    LoadData();
}   

定义LoadData函数如下

 private void LoadData()
 {
     foreach (ListItem item in check.Items)
     {
         if (item.Selected)
         {

             DropDownList drop = new DropDownList();

             drop.Items.Add("1");
             drop.Items.Add("2");

             drop.DataValueField = "1";
             drop.DataValueField = "2";
             drop.AutoPostBack = true;

             // assign id property to dropdown.

             drop.ID = "ddl_" + item.value.ToString();

             // add event handled for dynamically generated dropdown      
             drop.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);



             TableRow row = new TableRow();
             TableCell celula = new TableCell();

             // assing ID property to cell.

             celula.ID = "celula_" + item.value.ToString();
             celula.Style.Add("width", "200px");
             celula.Style.Add("background-color", "red");

             celula.RowSpan = 2;
             celula.Text = "item " + item.Value.ToString();
             TableCell celula1 = new TableCell();
             celula1.Style.Add("background-color", "green");
             celula1.Style.Add("width", "200px");

             celula1.RowSpan = 2;

             TableCell celula2 = new TableCell();
             celula2.Style.Add("width", "200px");
             celula2.Style.Add("background-color", "blue");
             celula2.Text = "unu";
             TableRow row1 = new TableRow();
             TableCell cel = new TableCell();
             cel.Text = "lalala";
             cel.Style.Add("background-color", "brown");




             celula1.Controls.Add(drop);
             row.Cells.Add(celula);
             row.Cells.Add(celula1);
             row.Cells.Add(celula2);
             row1.Cells.Add(cel);
             this.tabel.Rows.Add(row);
             this.tabel.Rows.Add(row1);
         }
     }

    }

处理事件如下

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList dd = (DropDownList)sender;

    // you can get dropdown from table row over here.
    // process with it as per your requirement.

    string strdropdownID = ((System.Web.UI.Control)(dd)).ID;

    string id = strdropdownID.Split('_')[1].ToString();
    string tblcID = "celula_" + id.ToString();
    TableCell celula = (TableCell)tabel.FindControl(tblcID);
    celula.RowSpan = Convert.ToInt32(dd.SelectedValue);
}

希望这对你有用......编码很快......