【问题标题】:Gridview inside UpdatePanel, paging/sorting doesn't work ONLY when using MasterPageUpdatePanel 中的 Gridview,分页/排序仅在使用 MasterPage 时不起作用
【发布时间】:2013-12-22 02:47:50
【问题描述】:

updatepanel 分页/排序问题中的另一个网格视图。

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>

Gridview 使用 Selecting 事件绑定到 linqdatasource。此代码在没有更新面板的情况下完美运行。如果我将不是内容页面的页面复制到母版页,它也可以完美运行。我已经阅读了很多关于带有分页和排序的更新面板中的 gridview 问题的帖子。事实上,有一个他们在最后得到它的家伙 cmets ,但在使用 MasterPage 时它仍然失败。我尝试在与 gridview 相同的页面中使用脚本管理器并更改脚本管理器的各种选项。为了让它工作,我只需创建一个新页面,复制我的 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 内工作。罪魁祸首?一个“响应。写”。当我将其关闭时,我可以按需创建问题。在这里“重新学习”了关于测试而不是假设任何事情的重要课程。不过还是有一些谜团。

有趣的是,对于有问题的原始页面,我没有 Response.Write 或任何我可以在我的代码中找到的东西。有没有人想过为什么“Response.Write”会破坏更新面板中的gridview排序/分页?如果是这样,这可能有助于查明正在发生的事情。

谢谢大家!

【问题讨论】:

  • 您是否尝试将 UpdateMode 设置为“始终”?
  • 是的,先生....在没有大师的页面时可以双向工作。否则无法正常工作。此外,通过“不工作”,我应该澄清当我单击列标题或要转到的页面时没有任何反应。

标签: asp.net gridview updatepanel


【解决方案1】:

嗯,这个问题的答案有点尴尬。

第 1 课 - 测试时,尽可能完全地隔离问题,不要假设任何事情。

第 2 课 - 解决 AJAX 问题时,查找 javascript 错误。

事实证明我的代码工作正常。问题是页面上的其他更新面板设置为“始终”更新。我注意到 Firebug 中的一个 javascript 错误提醒我在尝试对我遇到的问题的 gridview 进行排序/分页时找不到更新面板。当我尝试分页我的网格视图时,任何设置为始终的更新面板也会尝试更新。好吧,我的页面有一个带有更新面板的“隐藏”部分(可见性关闭)。当尝试对我的 gridview 进行排序/分页时,javascript 正在寻找这些,我假设更新它们,但找不到它们。出现 javascript 错误,所有进度都停止。解决方案是将全部隐藏的更新面板更改为有条件的(这会产生其他影响,但可以忍受)。

默认情况下这看起来是正确的行为吗?如果更新面板位于另一个可见性已关闭的控件中,它是否应该尝试更新?

谢谢大家。

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 2017-11-11
    • 2023-03-27
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    相关资源
    最近更新 更多