我需要在添加按钮单击事件上动态生成 3 个 DropDownList 框。生成 DDL 后,我应该能够为其分配数据源,并在 c# asp.net 中对它们执行 DDL-selectedEventChanged 功能。
下面的链接正是我正在寻找的,但我无法分配数据源或我无法执行任何功能
任何更好的想法请帮助
如果我按下按钮,我需要一次获得 3 个 DDL,如果我再次按下它应该再次生成,所以点击次数 = 否。每行包含三个 DDL 的行数
我需要在添加按钮单击事件上动态生成 3 个 DropDownList 框。生成 DDL 后,我应该能够为其分配数据源,并在 c# asp.net 中对它们执行 DDL-selectedEventChanged 功能。
下面的链接正是我正在寻找的,但我无法分配数据源或我无法执行任何功能
任何更好的想法请帮助
如果我按下按钮,我需要一次获得 3 个 DDL,如果我再次按下它应该再次生成,所以点击次数 = 否。每行包含三个 DDL 的行数
这是示例代码。唯一的技巧是您需要在回发后再次加载这些动态控件。否则,您将无法访问这些内容。
<asp:PlaceHolder runat="server" ID="PlaceHolder1"></asp:PlaceHolder>
<asp:Button runat="server" ID="AddButton" OnClick="AddButton_Click" Text="Add" />
private List<int> _controlIds;
private List<int> ControlIds
{
get
{
if (_controlIds == null)
{
if (ViewState["ControlIds"] != null)
_controlIds = (List<int>)ViewState["ControlIds"];
else
_controlIds = new List<int>();
}
return _controlIds;
}
set { ViewState["ControlIds"] = value; }
}
private List<string> DataSource
{
get { return new List<string> { "One", "Two", "Three" }; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
var dataSource = DataSource;
foreach (int id in ControlIds)
{
var ddl = new DropDownList();
ddl.ID = id.ToString();
foreach (var data in dataSource)
ddl.Items.Add(new ListItem(data));
PlaceHolder1.Controls.Add(ddl);
}
}
}
protected void AddButton_Click(object sender, EventArgs e)
{
var dataSource = DataSource;
for (int i = 0; i < 3; i++)
{
var reqs = ControlIds;
int id = ControlIds.Count + 1;
reqs.Add(id);
ControlIds = reqs;
var ddl = new DropDownList();
ddl.ID = id.ToString();
foreach (var data in dataSource)
ddl.Items.Add(new ListItem(data));
PlaceHolder1.Controls.Add(ddl);
}
}