【问题标题】:RowDataBound not showing all rows in GridViewRowDataBound 未显示 GridView 中的所有行
【发布时间】:2016-01-26 16:45:19
【问题描述】:

我有一个 RowDataBound 循环每条记录并使用 OrderId 执行查询以获取详细数据。然后,它的值被绑定到一个名为 gvOrders 的嵌套 GridView。我遇到的问题是我只得到绑定到 GridView gvOrders 的循环的最后一个 OrderId 值的结果。谁能帮我得到 GridView gvOrders 中所有循环的结果?我的绑定方法似乎有问题。

Protected Sub GridViewDetailInfo_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridViewDetailInfo.RowDataBound

    Dim strSQL As String

    If e.Row.RowType = DataControlRowType.DataRow Then

        Dim OrderId As String = e.Row.Cells(1).Text
        Dim gvOrders As GridView = DirectCast(e.Row.FindControl("gvOrders"), GridView)

        strSQL = "select Qty, Prod, Date from Order..orders where OrderNo='" + OrderId + "'"

        Me.SqlDataSourceDetail_Child.SelectCommand = strSQL
        gvOrders.DataBind()

    End If

End Sub

【问题讨论】:

    标签: asp.net vb.net gridview


    【解决方案1】:

    您对所有子 GridView 使用相同的 SqlDataSource (SqlDataSourceDetail_Child)。因此,当它最终到达最后一个 OrderId 时,您设置 shared SqlDataSourceSelectCommand,现在所有子 GridView 都获得相同的共享数据集。

    为了解决这个问题,每个子 GridView 都需要自己的数据源。你可以继续你的方式,为每个子 GridViews 创建一个单独的SqlDataSource,但我猜子 GridViews 的数量不是恒定的。在这种情况下,您需要摆脱子 SqlDataSource 并将数据源(例如 DataTable)绑定到每个子 GridView。

    这至少应该为您指明正确的方向:

    Protected Sub GridViewDetailInfo_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridViewDetailInfo.RowDataBound
    
        Dim strSQL As String
    
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim OrderId As String = e.Row.Cells(1).Text
            Dim gvOrders As GridView = DirectCast(e.Row.FindControl("gvOrders"), GridView)
    
            strSQL = "select Qty, Prod, Date from Order..orders where OrderNo='" + OrderId + "'"
    
            gvOrders.DataSource = FunctionToRetrieveData(strSQL)
            gvOrders.DataBind()
    
        End If
    
    End Sub
    

    另请注意,您对SQL injection 持开放态度。我建议查看parameterized queries

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 2014-11-28
      • 2012-05-10
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多