[英]assign to a td table the value from a dropdownlist
我在這樣的 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);
}
}
對於我檢查的每個值,都會創建一個新行,其中包含選中復選框的值、一個下拉列表和另外 2 個單元格。 現在我想為我創建的每個下拉列表做一些事情。所以如果我為第一行選擇 1,就會出現一些東西,如果我為另一行選擇 1,就會出現其他東西。 我做了一個 selectedindexchanged 但如果我從第一行選擇 1 它將顯示在兩行中。 如何分別引用我在循環中創建的每個下拉列表? 我正在使用 Asp.Net web 應用程序和 c#
修改您的代碼如下。
protected void Page_Load(object sender, EventArgs e)
{
LoadData();
}
如下定義 LoadData function
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);
}
希望這對你有用……編碼愉快……
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.