当前位置:  开发笔记 > 后端 > 正文

如何将Gridview中的DropDownList与来自gridview的数据绑定

如何解决《如何将Gridview中的DropDownList与来自gridview的数据绑定》经验,为你挑选了1个好方法。

获得答案的一半是知道如何提出问题.我不确定我做得很好,但这是我最好的一击.

我正在尝试将ddl绑定到gridview中的数据,该数据不是来自gridview本身.这在EditItemTemplate中.这样做的目的是让用户从查找存储过程开始选择值和一系列其他值.

我在这里提到我之前已成功完成此操作但使用了ObjectDataSource.我这次试图避免这种情况,现在完全从后面的代码中完成,然后将其移到数据层.

这是我到目前为止所拥有的......


...


                

....

Protected Sub usersGrid_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
    usersGrid.EditIndex = e.NewEditIndex
    BindData()

End Sub

....

Private Sub BindData()
    Dim conn As New SqlConnection(connectionString)
    Dim ad As New SqlDataAdapter("MAINT_DIST_GET_USERS", conn)
    Dim ds As New DataSet()
    ad.Fill(ds)
    GetListData()
    usersGrid.DataSource = ds
    usersGrid.DataBind()

End Sub

我包括最后两个以及我尝试过但失败的其他方法.

...

    Protected Sub usersGrid_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
    If e.Row.RowState = DataControlRowState.Edit Then
        Dim ddl As DropDownList = DirectCast(e.Row.FindControl("ddl_GetLists"), DropDownList)

        Dim conn As New SqlConnection(connectionString)
        Dim ad As New SqlDataAdapter("MAINT_DIST_GET_LISTS", conn)
        Dim ds As New DataSet()
        ad.Fill(ds)

        ddl.DataSource = ds
        ddl.DataBind()
    End If
End Sub

Public Function BindDropdown() As DataSet
    Dim conn As New SqlConnection(connectionString)
    Dim ad As New SqlDataAdapter("MAINT_DIST_GET_LISTS", conn)
    Dim ds As New DataSet()
    ad.Fill(ds)

    ddl_GetLists.DataSource = ds
    ddl_GetLists.DataBind()
End Function

我还会问,为什么在最终函数中,为什么控件ddl_GetLists也不被识别?在网格内部,它从设计器中消失,但在网格外部再次出现.

感谢大家的帮助.



1> James Johnso..:

你有几个选择.您可以使用数据源控件,也可以RowDataBound在GridView 的情况下绑定代码隐藏中的下拉列表.

我注意到你的代码中也存在一些问题.在您的示例中,您分配的DataSourceID不正确.本DataSourceID应指向一个页面上DataSource控件的ID:

    


                                             
 

如果要在代码隐藏中进行绑定,可以通过以下RowDataBound事件执行此操作:

Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs)
    If e.Row.RowType = DataControlRowType.DataRow AndAlso (e.Row.RowState And DataControlRowState.Edit) = DataControlRowState.Edit Then
        Dim ddl As DropDownList = TryCast(e.Row.FindControl("ddl_GetLists"), DropDownList)
        If ddl IsNot Nothing Then
            ddl.DataSource = RetrieveDataSource()
            ddl.DataBind()
        End If
    End If
End Sub

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有