【问题标题】:Entire Page refreshes even though gridview is in an update panel即使 gridview 在更新面板中,整个页面也会刷新
【发布时间】:2010-09-07 06:44:38
【问题描述】:

我有一个网格视图,它位于我在页面上的模式弹出窗口的更新面板中。
问题是每次我单击网格视图中的图像按钮时,整个页面都会刷新。这会导致我的整个页面加载,并且由于我已将页面的其余部分显示为灰色,因此用户无法单击它,这非常烦人。

有谁知道我错过了什么。

编辑:我在底部输入了一个更好的解决方案

【问题讨论】:

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


    【解决方案1】:

    为了防止回发,在 onclick 事件中添加 return false。

    button.attribute.add("onclick","re​​turn false;");

    示例:

    string PopupURL = Common.GetAppPopupPath() + "Popups/StockChart.aspx?s=" + symbol;
    hlLargeChart.Attributes.Add("onclick", String.Format("ShowPopupStdControls(PCStockChartWindow,'{0}');return false;", PopupURL));
    

    【讨论】:

      【解决方案2】:

      供参考..

      我还注意到,在使用可怕的 <asp:UpdatePanel ... /><asp:LinkButton ... /> 时,以及 UpdatePanel 上的 UpdateMode="Conditional" 需要进行以下其他更改:

      • <asp:Content ... /> 需要 ViewStateMode="Enabled"(我在 MasterPage 中将其设置为 Disabled
      • ClientIDMode="Static" 必须从 <%@ Page ... /> 中删除

      【讨论】:

        【解决方案3】:

        几个月后,这个问题得到了解决。我正在从事的项目是以前的 v1.1,它是用 2.0 转换的。但是,在 web.config 中,这一行仍然存在:

        <xhtmlConformance mode="Legacy"/>
        

        当它被注释掉时,我们似乎使用 ajax 控制工具包的所有错误都消失了

        【讨论】:

          【解决方案4】:

          我遇到了这个问题,偶然发现了以下文章:

          http://bloggingabout.net/blogs/rick/archive/2008/04/02/linkbutton-inside-updatepanel-results-in-full-postback-updatepanel-not-triggered.aspx

          我的按钮不是像本例那样在代码中动态创建,但是当我检查 aspx 中的代码时,它确实缺少 ID 属性。添加 ID 后,回发变得异步并开始按预期运行。

          所以,总而言之,检查您的按钮是否有 ID!

          【讨论】:

            【解决方案5】:

            UpdatePanel 可能对格式错误的 HTML 敏感。从您的浏览器查看源代码并通过 W3C 验证器之类的东西运行它以查找任何奇怪的东西(未关闭的 div 或表格是通常的嫌疑人)

            如果您使用 Firefox,有一个 HTML 验证器扩展/插件可用,效果非常好。

            【讨论】:

              【解决方案6】:

              我会离开 onClick 并将其设置为 updatePanel 的触发器。

              奇怪的是它在 FF 而不是 IE 中工作。这与我们所经历的行为相反。

              【讨论】:

                【解决方案7】:

                您是在 Firefox 还是 IE 中进行测试?我们有一个类似的问题,即整个页面在 Firefox(但不是 IE)中刷新。为了解决这个问题,我们使用了一个隐藏的 asp:button 并设置了 useSubmitBehavior="false"。

                <asp:Button ID="btnRefresh" runat="server" OnClick="btnRefresh_Click" Style="display: none" UseSubmitBehavior="false" />
                

                【讨论】:

                  【解决方案8】:

                  确保您在 UpdatePanel 上进行了以下设置: ChildrenAsTriggers=false 和 UpdateMode=Conditional

                  【讨论】:

                    【解决方案9】:

                    Modal Window 是否使用 IE Modal 窗口弹出?还是您正在展示的 DIV?

                    如果是 IE Modal Popup 你需要确保你有

                       <base target="_self" /> 
                    

                    为了确保回帖到模态页面。

                    如果它是 DIV,请确保您的 XHTML 正确,否则它可能不知道要更新什么。

                    【讨论】:

                      【解决方案10】:

                      更新面板上有 ChildrenAsTriggers="false" 吗?

                      页面上是否有任何 javascript 错误?

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2017-04-09
                        • 1970-01-01
                        • 1970-01-01
                        • 2012-03-01
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多