0

我有一个带有 LayoutTemplate、ItemTemplate 和 EditTemplate 的 ListView。列表视图绑定到代码隐藏中的数据表。项目模板由标签和复选框组成。列表视图只会显示一条记录。在 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

不幸的是,由于下拉列表中有 lo ListItems,我收到一个错误,即绑定失败,因为下拉列表中不存在该值。

所以我试图在 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 回答