2012-06-12 29 views
2

這是我的下拉列表和數據源。我的問題是......什麼時候可以爲下拉列表設置一個默認的選定選項,或者是什麼時候讓所有下拉列表都被數據綁定並填充它們的ListItems?我嘗試過Page_PreRender,Page_PreRenderComplete,Page_Load。DataBinding何時發生下拉列表?

我已閱讀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

只是爲了確保標記中的處理程序和在代碼後面使用正確處理程序的方法。

像這樣:

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> 

想我的機器上的一個類似的解決方案剛纔和它的工作。

+0

我錯過了我的asp標記中的OnPreRender =「Page_PreRender」,但它仍然無法正常工作..您是否建議在您的示例中使用Page_PreRender函數,所有來自RampStandardDataSource的綁定ListItems都可用? – Kulingar

+0

他們應該是,是的。 – JaggenSWE