2010-12-13 74 views
1

我在页面上有一个数据绑定下拉列表,其中在page_load中设置了selectedValue(在'not isPostBack'内)。在设置值后获取dropDownList的selectedValue()

虽然页面显示正常,并显示正确的项目作为选择..在page_load内,如果我尝试获取selectedValue()并将其显示在屏幕上,我总是得到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 
+0

您能粘贴下拉列表的标记和Page_Load的C#/ VB代码段吗? – jwiscarson 2010-12-13 15:09:29

+0

尝试设置所选值后手动调用dll DataBind()方法。 – 2010-12-13 15:19:15

+0

@jwiscarson - 看到上面的代码 – 2010-12-13 15:20:39

回答

1

手动调用DataBind()下降的方法在设置选定的值后下降。

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

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

+0

谢谢:)简单,我只需要记住它! – 2010-12-13 15:35:26

+0

@Tabloo没有问题..在使用Reflector进行一些挖掘后,我看到设置SelectedValue将下拉列表中适当的Item的Selected属性赋值为true,但是它没有设置下拉列表的SelectedIndex,而SelectedValue getter只是简单的:'返回this.Items [selectedIndex] .Value'(当然它在selectIndex不是-1之前检查),所以它解释了为什么它总是为空。 – 2010-12-13 15:39:14

+0

我以为这是一个页面生命周期问题 - 很好的发现! – jwiscarson 2010-12-13 15:47:42

相关问题