asp.net - CompositeControl 中的 DropDownList 是否应该记住所选项目?

标签 asp.net data-binding drop-down-menu composite-controls

鉴于以下情况

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/

相关文章:

java - 如何从 Selenium WebDriver 的下拉列表中获取所有元素?

asp.net - Asp.net表单中的AntiForgery实现

javascript - jquery库冲突

asp.net - Azure 与 owin 和 web.config 中的授权

html - 如何在选择列表中设置标题和默认值?

javascript - 这段 AngularJS 代码的目的是什么?

c# - 有没有办法在 ASP.NET 面板控件上设置最小高度?

Angular 2 : [ngClass] update condition in the function

android - 找不到符号类数据绑定(bind) impl

c# - 提交后 ASP.Net MVC View 下拉列表未绑定(bind)到模型(发布)