鉴于以下情况
public class MyControl : CompositeControl
{
private DropDownList myList;
protected override void CreateChildControls()
{
base.CreateChildControls();
myList = new DropDownList();
myList.AutoPostBack = true;
this.Controls.Add(myList);
if (!Page.IsPostBack)
{
myList.DataSource = MyBLL.SomeCollectionOfItems;
myList.DataBind();
}
}
}
我发现列表中的项目可以正确保留,但是当呈现不同的控件然后再次呈现该控件时,最后选定的项目不会保留。 (始终选择列表中的第一项)
最后选择的项目是否应该自动保留在 ViewState 中,还是我期望太多?
最佳答案
我认为这是一个隐藏的 ViewState 问题。您可以在 CreateChildControls 中创建并绑定(bind)控件。您应该只在这个地方创建控件。将绑定(bind)代码移至类加载事件并使用 EnsureChildControls。
关于asp.net - CompositeControl 中的 DropDownList 是否应该记住所选项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3185487/