ASP.NET数据绑定值后面有1个回发

时间:2015-02-12 08:14:03

标签: asp.net vb.net select gridview postback

我有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 DropDownList2DropDownList4的值完全正常。

0 个答案:

没有答案