DataBinding何时会出现下拉列表?

时间:2012-06-12 16:42:16

标签: asp.net vb.net drop-down-menu page-lifecycle

这是我的下拉列表和数据源。我的问题是..什么时候可以为下拉列表设置默认选择的选项,也就是说所有的下拉列表都是数据绑定并且他们的ListItems已填充?我尝试过Page_PreRender,Page_PreRenderComplete,Page_Load。

我已阅读过MSDN的页面生命周期事件,该事件建议使用Page_PreRender。

 <asp:DropDownList ID="ddlRampStandard" runat="server"
 DataSourceID="RampStandardDataSource" DataTextField="StandardName" 
 DataValueField="StandardName" RepeatDirection="Horizontal" 
 ViewStateMode="Enabled"></asp:DropDownList>

 <asp:SqlDataSource ID="RampStandardDataSource" runat="server" 
 ConnectionString="<%$ ConnectionStrings:AIMP_DeleteMeConnectionString %>" 
 SelectCommand="SELECT [StandardName] FROM [CR_Standard]"></asp:SqlDataSource>

这是一个简单的代码隐藏,它说明了我正在尝试做什么。

Protected Sub Page_PreRenderComplete(sender As Object, e As System.EventArgs) Handles Me.Load
ddllstSideOfStreet.Items(0).Selected = True
End Sub

我收到一个未创建的实例错误提示ddllstSideOfStreet没有项目。我确实用断点验证了前面提到的prerender,load,prerendercomplte函数中没有任何项目。但是当页面加载时,下拉列表确实加载了预期的数据绑定信息。想法?

1 个答案:

答案 0 :(得分:1)

只是为了确保在标记中使用处理程序,并在后面的代码中使用正确的处理程序。

像这样:

Protected Sub Page_PreRender(sender As Object, e As System.EventArgs) Handles Me.PreRender

End Sub

标记如下:

<asp:DropDownList ID="ddlRampStandard" runat="server"     
 DataSourceID="RampStandardDataSource" DataTextField="StandardName"      
 DataValueField="StandardName" RepeatDirection="Horizontal"      
 ViewStateMode="Enabled" OnPreRender="Page_PreRender"></asp:DropDownList>

刚才在我的机器上尝试过类似的解决方案,但它确实有用。