gpt4 book ai didi

c# - SelectedIndexChanged 在动态下拉列表中不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:09 27 4
gpt4 key购买 nike

我使用 C# 使用 ASP.NET WebForms。单击它创建一个下拉列表时,我有一个按钮。这个列表是在“createlist”方法中使用 id 和 items 等参数创建的。我还添加了一个 SelectedIndexChanged 事件处理程序。

列表创建成功,但是当我在 3 个选项之间切换时,处理程序没有触发,因为控制台从不打印消息“CHANGE”。

这是我的代码:

namespace web
{
public partial class Default : System.Web.UI.Page
{
List<string> lstDivs = new List<string>();

protected void btn_Click(object sender, EventArgs e)
{
Control results = FindControl("results");
lstDivs.Add("One");
lstDivs.Add("Two");
lstDivs.Add("Three");
DropDownList lstTipo = createList("lstTipos", lstDivs);
results.Controls.Add(lstTipo);
}

public DropDownList createList(string id, List<string> lstStr)
{
DropDownList lst = new DropDownList();
lst.Attributes.Add("runat", "server");
lst.ID = id + "" + Variables.numDiv;
lst.SelectedIndexChanged += new EventHandler(change);
lst.AutoPostBack = true;

lst.Items.Add(new ListItem("Select...", "Select..."));
for (int i = 0; i < lstStr.Count; i++)
{
lst.Items.Add(new ListItem(lstStr[i], lstStr[i]));
lst.Items[i].Attributes.Add("id", lst.ID + "" + i.ToString());
}

return lst;
}

protected void change(object sender, EventArgs e)
{
Debug.Write("CHANGE\r\n");
}
}
}

最佳答案

创建动态控件并向用户显示后,必须在回发时重新创建它才能触发事件。事件的执行由控件本身触发,因此,如果没有控件 - 没有人会检测到更改并调用您的 change 方法。

您必须保留已创建下拉列表的事实(隐藏字段、ViewState、Session、数据库...)并在 Page_Load 中再次创建它。

关于c# - SelectedIndexChanged 在动态下拉列表中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32587748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com