【问题标题】:'EnableViewState = false' of an asp.net DropDownListasp.net DropDownList 的“EnableViewState = false”
【发布时间】:2009-08-23 16:04:28
【问题描述】:

如果将 asp.net DropDownList 设置为 EnableViewState=false,则 DropDownList.SelectedItem 返回 null。

那么在保持 EnableViewState=false 的同时,我可以使用什么技术来获取该 DropDownList 的 SelectedItem?

【问题讨论】:

    标签: asp.net drop-down-menu viewstate


    【解决方案1】:
    Request.Form[yourDropDownList.UniqueID] 
    

    UniqueID 返回“ctl00$ContentMain$ddlCountry”,其中 ClientID 返回“ctl00_ContentMain_ddlCountry”

    UniqueID 被插入到用于回发表单名称的 HTML 表单名称中。

    【讨论】:

      【解决方案2】:
      this.Request.Form[this.List.ClientID];
      

      【讨论】:

        【解决方案3】:

        我的猜测是问题在于您在代码隐藏文件中手动对下拉列表进行数据绑定。将数据绑定从 Page_Load() 移动到 Page_Init() 可能会有所帮助。

        但在我看来,更好的解决方案是使用ObjectDataSource 来填写 DropDownList 的值。这样您就可以确定在页面生命周期中的正确时间加载值。

        【讨论】:

        • Jan,我有类似的情况,由于某种原因,我的 RadComboBox 在回发时失去了它的价值。我正在使用 ObjectDataSource 并且一直认为它会在页面生命周期中的正确位置处理绑定,所以我不确定为什么会发生这种情况。有什么想法吗?
        • 抱歉,Jacques,我帮不了你。它将使用常规 DropDownList 进行快速测试。如果这可行,那么问题可能出在控件内部。否则,请尝试在 Stack Overflow 上询问。 :)
        【解决方案4】:
        string selectedValue = Request.Form["MyDropDownList"];
        

        【讨论】:

          【解决方案5】:

          这是我使用 VS2010 的解决方案。 1. 将 EnableViewState 设置为 false。 2. 将下拉列表框绑定到一个sqldataadapter。

          之前: 将 EnableViewState 设置为 false 后,我必须在每次回发时重新加载列表框。这行得通。然而,第一次从列表中选择一个值时,SelectedIndexChanged 事件被触发,但 selectecitem.Value 没有改变(它保持在“0”)。第二次从列表中选择一个值时,selectecitem.Value 是正确的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多