双回发导致SelectedIndexChanged触发,它会触发AutoPostback

时间:2009-11-24 17:25:09

标签: .net asp.net ajax asp.net-ajax updatepanel

我在UpdateTemplate中有一个Gridview。我在四个不同的列中有四个模板字段。每个TemplateField都有一个UpdatePanel,其中包含一个控件。所有列都是可排序的,Gridview是可分页的。其中三个模板字段在UpdatePanel中有DropDowns,另一个有文本框,所有这些控件都有AutoPostBack = True。所有UpdatePanel都有UpdateMode = Conditional和ChildrenAsTriggers = false。

当我点击排序或更改页面索引并且结果未返回并再次执行时(单击排序或页面索引),当忙碌时,SelectedIndexChanged和TextChanged事件会触发某些控件。

似乎取决于我何时这样做,一些结果已刷新并且事件不会触发但有些仍然很忙,第二个Postback会停止第一个并认为值已更改并在那里触发各自的AutoPostBackt事件。当所有事件触发网格时,然后显示第一个排序或页面索引更改所期望的预期结果集。

2 个答案:

答案 0 :(得分:1)

这里有问题吗?

您可以做的一件事是在等待第一个Ajax调用时添加“忙”显示并禁用可能导致另一个回发的控件。记住AJAX中的第一个A代表:异步。

答案 1 :(得分:1)

如果没有与您相同的复杂程度,就嵌套控件等而言,我最近有一个类似的问题:Why do unrelated (autopostback) methods get called when an Asp.Net ListBox autopostback method is invoked?我认为这可能与您的问题有关。

我的问题与ListBox autopostback方法特别相关,并且事实上不应调用的方法实际上被调用,并且与实际更改的ListBox的SelectedIndex有关,令我惊讶的是,因此可以通过将这些ListBox的SelectedIndex设置为0来解决,这可以通过将我的原始问题的几个答案中所解释的解释来解决。

如果没有与您的问题完全相同,我认为我的链接问题可能有相同的原因。