即使 gridview 在更新面板中,整个页面也会刷新

问题描述 投票:0回答:11

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

有人知道我错过了什么吗?

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

asp.net gridview asp.net-ajax updatepanel
11个回答
3
投票

确保在 UpdatePanel 上设置了以下内容: ChildrenAsTriggers=false 和 UpdateMode=Conditional


2
投票

UpdatePanel 上有 ChildrenAsTriggers="false" 吗?

页面上是否有javascript错误?


2
投票

我遇到了这个问题并遇到了以下文章:

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

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

总之,请检查您的按钮是否有 ID!


1
投票

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

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

1
投票

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

<xhtmlConformance mode="Legacy"/>

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


0
投票

Modal Window是使用IE Modal window弹出的吗?还是您正在展示的 DIV?

如果它是一个 IE 模态弹出窗口,您需要确保您有

   <base target="_self" /> 

确保回发到模态页面。

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


0
投票

我会保留 onClick 并将其设置为 updatePanel 的触发器。

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


0
投票

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

如果您使用 Firefox,可以使用 HTML 验证器扩展/附加组件,效果非常好。


0
投票

供参考..

我还注意到,当使用可怕的

<asp:UpdatePanel ... />
<asp:LinkButton ... />
时,以及
UpdateMode="Conditional"
上的
UpdatePanel
还需要以下其他更改:

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

0
投票

为了防止回发,将 return false 添加到 onclick 事件。

button.attribute.add("onclick","return false;");

样品:

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

0
投票

就我而言,这对我有用:

更改 web.config

    <xhtmlConformance mode="Transitional"/>

    'default.aspx 
    asp:GridView ID="GridView1" runat="server" Width="940px" 
    HorizontalAlign="Center" 
    OnRowCommand="GridView1_RowCommand" AutoGenerateColumns="false" 
    AllowPaging="true" PageSize="5"
    DataKeyNames="idarea" CssClass="table table-hover table-striped"
    OnPageIndexChanging="GridView1_PageIndexChanging" 

    'default.aspx.vb
   Protected Sub GridView1_PageIndexChanging(sender As Object, e As 
        GridViewPageEventArgs) Handles GridView1.PageIndexChanging
        BindGrid()
        GridView1.PageIndex = e.NewPageIndex
        GridView1.DataBind()
   End Sub

谢谢你的提示。 路易斯帕伦西亚

© www.soinside.com 2019 - 2024. All rights reserved.