我有一个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
答案 0 :(得分:1)
您对所有子GridView使用相同的SqlDataSource
(SqlDataSourceDetail_Child)。因此,当它最终到达最后OrderId
时,您设置共享 SelectCommand
的{{1}},现在所有子GridView都获得相同的共享集数据。
为了解决这个问题,每个子GridView都需要自己的数据源。你可以继续你的方式为每个子GridView创建一个单独的SqlDataSource
,但我猜测GridViews的数量不是恒定的。在这种情况下,您将需要删除子SqlDataSource
并将数据源(如DataTable)绑定到每个子GridView。
这至少应该指向正确的方向:
SqlDataSource
另请注意,您向SQL injection开放。我建议调查parameterized queries。