0

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によって検出されていません。私がどこで間違っているのかについてのアイデアはありますか?

4

1 に答える 1

1

作業として、ItemDataBoundイベントにデータバインディングを残し、プログラムでドロップダウンの選択された値を設定できます。それは私が知っている苦痛ですが、それはあなたが経験している問題を解決するでしょう。

于 2013-02-09T16:05:39.253 に答える