我有GridView
填充了数据绑定内容。每行都是可选的。点击行(selectedindexchanged
)后,我会使用第一个数据键过滤我的第二个gridview(GridView1
的数据键作为GridView2
的过滤条件,我更改了FilterExpression
的{{1}}与GridView2
的数据键匹配。这是有效的,因为GridView1
似乎已根据所选行正确过滤。但是,选择一行时会发生奇怪的事情。
选择行会正确过滤第二个网格视图,但是我从第二个网格视图中返回的值(通过执行GridView2
)总是滞后一个回发仅落后于两列......而且它只发生一次我'已经两次选择了一行!这很奇怪。
例如,如果我选择GridView2.Rows[0].Cell(2).Text
中的第一行。这会正确过滤我的第二个GridView,给我一个值1.所以GridView1
。然后,如果我单击GridView 1中的第二行,GridView 2再次正确过滤,显示正确的信息,但GridView2.Rows[0].Cell(2).Text = 1
仍然会给我1而不是让我们说5.然后,如果我在GridView1中选择第三行, GridView 2过滤没有问题,GridView2.Rows[0].Cell(2).Text
将给我5.而同一网格中包含的另一列将正确更改。只有两列落后于1回发。
我几个月来一直在研究这个问题,但没有任何工作。我没有办法真正解决这个......任何想法?
编辑:每个请求GridView2.Rows[0].Cell(2).Text
事件期间发生的代码:
indexchanged
那么发生了什么,我得到了GridView1中所选行的RowID,用它来过滤GridView2,然后我在页面中设置所有表单控件值以匹配网格中的那些。后面一个值的回发是Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged
Dim rowId As Integer = CInt(GridView1.DataKeys(GridView1.SelectedIndex).Value)
SqlDataSource6.FilterExpression = ""
SqlDataSource6.FilterExpression = "InquiryID = " & rowId
GridView2.Visible = True
TextBox2.Text = GridView1.SelectedRow.Cells(2).Text
DropDownList2.SelectedValue = GridView1.SelectedRow.Cells(3).Text
DropDownList3.SelectedValue = GridView1.SelectedRow.Cells(4).Text
DropDownList4.SelectedValue = GridView2.Rows(0).Cells(1).Text
End Sub
和DropDownList2
。 DropDownList4
的值完全正常。