updatepanel分页/排序问题中的另一个gridview。
Gridview看起来像这样:
<asp:UpdatePanel runat="server"
ID="upGdvPendingReview"
ChildrenAsTriggers="true"
UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView
ID="gdvPendingReview"
runat="server"
PageSize="10"
AllowPaging="true"
AllowSorting="true"
>
<columnCrudHere>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
使用Selecting事件将Gridview绑定到linqdatasource。此代码在没有updatepanel的情况下完美运行。如果我复制到不是母版页的内容页面的页面,它也可以完美地工作。我在阅读和排序的更新面板中阅读了很多关于gridview问题的帖子。实际上,有一个他们最后评论说他得到了它的工作但是在使用MasterPage时它仍然失败。我尝试在与gridview相同的页面中使用scriptmanager并更改scriptmanager的各种选项。为了让它工作,我只是创建一个新页面,复制我的gridview,linqdatasource,scriptmanager和代码...并且繁荣它的工作原理。这让我想知道我是否在页面中有其他东西妨碍了。我还有其他更新面板,我可以更新内容。所以,这......与简要提及相同问题的帖子相结合让我感到困惑。
我还尝试明确列出该事件:
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gdvPendingReview" EventName="PageIndexChanging" />
</Triggers>
以下是有人遇到同样问题的帖子(最后): GridView PAGING inside UpdatePanel does not work for second page change, why?
***更新
随着我继续测试,它变得更令人沮丧和迷人。我创建了两个只有gridview,linqdatasource,scriptmanager和数据绑定方法的新页面。一个页面没有主页....另一个页面有一个主页(但是一个全新的,干净的,以避免任何可能的干扰)。结果相同!只要我没有引用母版页,分页/排序就可以异步工作。 :(
***更新
我应该承认我是个骗子。我设置的测试页面(使用Master)确实在之前的测试中留下了一些代码。事实上,当我将这段代码注释掉时,我的GridView分页在使用MasterPage时在UpdatePanel内部工作。罪魁祸首? A&#34; Response.Write&#34;。当我将其关闭时,我可以根据需要创建问题。大课程&#34;重新学习&#34;这里关于测试而不是假设什么。但是仍然有一些神秘感。
有趣的是,我没有在我的代码中找到Response.Write或我可以找到的任何问题的原始页面。有没有人想过为什么&#34; Response.Write&#34;会破坏updatepanel中的gridview排序/分页吗?如果是这样,那可能有助于查明正在发生的事情。
全部谢谢!
答案 0 :(得分:0)
嗯,这个问题的答案有点令人尴尬。
第1课 - 当您进行测试时,您将尽可能完全隔离您的问题,并且不要做任何事情。
第2课 - 在解决AJAX问题时,请查找javascript错误。
原来我的代码工作正常。问题是页面上的其他更新面板设置为“始终”更新。我注意到Firebug中的一个javascript错误警告我在尝试排序/分页gridview时找不到更新面板我遇到了问题。当我尝试寻找我的gridview时,任何updatepanel设置为始终也会尝试更新。好吧,我的页面有一个“隐藏”部分(可见性已关闭),其中包含updatepanels。在尝试排序/分页我的gridview时,javascript正在寻找这些,我假设更新它们,但找不到它们。有一个javascript错误,所有进度停止。解决方案是将所有隐藏的更新面板更改为有条件的(这有其他影响但是可以忍受)。
默认情况下,这似乎是正确的行为。如果updatepanel位于其可见性已关闭的另一个控件内,是否应该尝试更新?
谢谢大家。