【问题标题】:get selectedValue() of dropDownList after setting the value设置值后获取dropDownList的selectedValue()
【发布时间】:2010-12-13 15:04:45
【问题描述】:

我在页面上有一个数据绑定下拉列表,在 page_load 中我设置了 selectedValue(在“not isPostBack”内)。

虽然页面显示正常并显示正确的项目为选中.. 如果我尝试获取 selectedValue() 并将其显示到屏幕上,我总是在 page_load 内得到 null ... selectedIndex 为 -1。

我有一个按钮,单击它时引用此 ddl 的 selectedValue,在这里它会拉出预期的结果.. 那么为什么我在设置后无法立即看到它,而仍在 page_load 中?

干杯:)

编辑:代码..

ddl 声明

<asp:DropDownList runat="server" ID="dlCountryList" DataSourceID="dsCountryList"
                DataValueField="countrylistid" DataTextField="description">
</asp:DropDownList>

和 page_load

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     dlCountryList.SelectedValue = "GR"
     Response.Write("*" + CStr(dlCountryList.SelectedIndex) + "*")
End Sub

【问题讨论】:

  • 你能粘贴下拉列表的标记和Page_Load中的C#/VB代码部分吗?
  • 设置选中的值后尝试手动调用dll的DataBind()方法。
  • @shadow 向导 - 谢谢!那是诀窍..但是我缺少什么基础知识让我想知道为什么会这样? databind() 是否在其他地方被隐式调用,这允许我的按钮访问正确的 selectedValue()?
  • 干杯,很高兴它正在工作..有关更多详细信息,请参阅我的答案。 :)

标签: asp.net drop-down-menu


【解决方案1】:

设置选中值后手动调用下拉菜单的DataBind()方法

SelectedValue 不是控件的普通 get/set 属性,通过设置它,您只需设置一些在绑定下拉列表时使用的“标志”。

默认情况下,它绑定在 Page_Load 事件之后(不确定具体是哪个事件),但也可以手动调用它。

【讨论】:

  • 谢谢 :) 很简单,我只需要记住它!
  • @Tabloo 没问题.. 在使用 Reflector 进行一些挖掘之后,我看到设置 SelectedValue 将下拉列表中正确项目的 Selected 属性分配为 true,但是它没有设置下拉列表的 SelectedIndex , SelectedValue getter 很简单:return this.Items[selectedIndex].Value(当然它会在 selectedIndex 不是 -1 之前检查)所以它解释了为什么它总是为空。
  • 我以为这是一个页面生命周期问题——很好的发现!
  • @jwiscarson 也页面生命周期,因为 SelectedIndex 是在某个时候设置的。 :)
猜你喜欢
  • 2014-05-21
  • 2010-11-28
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多