我一直在試驗這個,試圖瞭解頁面生命週期幾個小時。我完全被困在這一點上:'(任何幫助將非常感激在動態填充的CheckBoxList中預先選擇項目
以下是我的方法我的_PrefillWizard
方法實際上適用於我的頁面上的所有控件,除了那些動態填充的控件。CheckBoxList
s是這樣的,因爲它們是根據我的數據庫中的表中的可選值自動生成的。我已經在我的標記中擁有此控件,因此...我如何在運行其他代碼之前強制執行此操作並準備就緒?
<asp:CheckBoxList ID="MyLanguagesCBL" runat="server" RepeatDirection="Vertical"
RepeatColumns="4" Width="100%" DataSourceID="LanguagesSDS"
DataTextField="Language" DataValueField="ID">
</asp:CheckBoxList>
<asp:SqlDataSource ID="LanguagesSDS" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>"
SelectCommand="select ID, [Language] from LanguagesListTable"
DataSourceMode="DataReader">
</asp:SqlDataSource>
顯然,這些特定的控件尚未生成,或者在調用我的_PrefillWizard
時導致沒有任何CheckBox被預先生成-填充。 如何在調用預填方法之前讓它們生成?謝謝;)
事情發生的點擊事件。
'On "Load" Button click, clears a Wizard control and Prefills it with the
' data from the clicked record based on the primary key stored in SessionState.
Protected Sub RowClick(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles GridView2.RowCommand
If e.CommandName = "Select" Then
Session.Add("ClickedPrimaryKey", GridView2.DataKeys(e.CommandArgument).Value.ToString)
'This is the main function which calls "_SetCheckBoxes" among others.
_PrefillWizard(Session.Item("ClickedPrimaryKey"))
End If
End Sub
這是我來填充我的CheckBoxList
控制功能,但它顯然取決於是否有已加載頁面上的控制。
'Parse a CSV String from the Database back into CheckBoxList Selections
Protected Sub _SetCheckBoxes(ByRef cbl As CheckBoxList, ByRef dt As DataTable, ByVal row As Integer, ByVal csv As String)
'Do something if there is a value in the cell
If Not IsDBNull(dt.Rows.Find(row)(csv)) Then
For Each item As ListItem In cbl.Items
item.Selected = False 'Reset the checkbox first
'Then, if the ID value of the checkbox corresponds to a value
' in the CSV string, then tick the checkbox.
If csv.Contains(item.Value) Then
item.Selected = True
End If
Next
End If
End Sub
我迷路了。 :(目前我有一個預填充的按鈕單擊表單,在該表單上生成了我動態填充的CheckBoxList,我相當確定問題是事件以錯誤的順序觸發,而我不能爲我的生活弄清楚如何讓事情按照正確的順序發生。:( – Chiramisu