LayoutTemplate、ItemTemplate、EditTemplateを備えたListViewがあります。リストビューは、コードビハインドのデータテーブルにバインドされています。アイテムテンプレートは、ラベルとチェックボックスで構成されています。リストビューには、1つのレコードのみが表示されます。リストビューは、ItemTemplateにあるときにうまく機能します。[編集]ボタンをクリックすると、次のようなItemEditingメソッドが呼び出されます。ところで、EditTemplateには、テキストボックスのチェックボックスと4つのドロップダウンリストがあります。
Protected Sub ListView1_ItemEditing(ByVal sender As Object, ByVal e As ListViewEditEventArgs) Handles ListView1.ItemEditing
ListView1.EditIndex = e.NewEditIndex
'Create SQL, Execute and save to Datatable and bind to ListView1
'Session("SID") is the ID of the Subject we are viewing.
LoadData(Session("SID"))
End Sub
残念ながら、ドロップダウンリストにはリストアイテムが含まれているため、値がドロップダウンリストに存在しなかったため、バインディングが失敗したというエラーが表示されます。
そのため、ItemCreatedのときにドロップダウンリストにデータを入力しようとしました...私のコードは...
Protected Sub ListView1_ItemCreated(ByVal sender As Object, ByVal e As ListViewItemEventArgs) Handles ListView1.ItemCreated
Try
Dim ddl_Type As DropDownList = ListView1.EditItem.FindControl("ddl_Type")
Dim ddl_Suitability As DropDownList = ListView1.EditItem.FindControl("ddl_Suitability")
Dim ddl_Brands As DropDownList = ListView1.EditItem.FindControl("ddl_Brands")
Dim ddl_Status As DropDownList = ListView1.EditItem.FindControl("ddl_Status")
'We need to populate ddls
SqlStr = "SELECT Type As ddlText FROM tbl_SType ORDER BY Type"
PopulateDDL(ddl_Type, SqlStr, "Please Select...")
SqlStr = "SELECT Suitability As ddlText FROM tbl_Suitability ORDER BY Suitability"
PopulateDDL(ddl_Suitability, SqlStr, "Please Select...")
SqlStr = "SELECT Brand As ddlText FROM tbl_Brands ORDER By Brand"
PopulateDDL(ddl_Brands, SqlStr, "Please Select...", "Other...")
SqlStr = "SELECT StatusText As ddlText, Status As ddlValue FROM tbl_Status ORDER BY Status"
PopulateDDLvalue(ddl_Status, SqlStr, "Not Visited Yet", "0")
Catch ex As Exception
End Try
End Sub
しかし、コントロールはFindControlによって検出されていません。私がどこで間違っているのかについてのアイデアはありますか?