2

これが私のドロップダウンリストとデータソースです。私の質問は..ドロップダウンリストにデフォルトで選択されたオプションを設定できるのはいつですか。つまり、すべてのドロップダウンリストがデータバインドされ、それらのListItemが設定されているのはいつですか。Page_PreRender、Page_PreRenderComplete、Page_Loadを試しました。

Page_PreRenderを提案するMSDNのページライフサイクルイベントを読みました。

 <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関数のいずれにもアイテムが存在しないことを確認します。ただし、ページが読み込まれると、ドロップダウンリストに期待されるデータバインド情報が実際に読み込まれます。考え?

4

1 に答える 1

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>

少し前に私のマシンで同様の解決策を試しましたが、うまくいきました。

于 2012-06-12T17:04:37.553 に答える