【问题标题】:asp.net UpdatePanel not working correctlyasp.net UpdatePanel 无法正常工作
【发布时间】:2012-10-13 01:45:53
【问题描述】:

我正在使用 UpdatePanel 刷新带有一些搜索结果的数据网格,但无法正常工作,整个页面进入回发状态。我希望有人可以帮助我,不能让它正常工作。 .谢谢。这是我的代码:

            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>

            <table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                    <td align="left" class="pageTitle" valign="top">
                        <twc:LocalizedLiteral Text="CRMcontxt6" runat="server" />
                    </td>
                </tr>

                    <tr align="left" style="background-color: #9bbbe3">
                        <td align="left" colspan="3">
                            <asp:Label ID="lblSearch" Height="15" runat="server" Font-Bold="true" Font-Size="11"></asp:Label>
                            <asp:TextBox Width="500px" ID="Search" autoclick="BtnSearch" runat="server" CssClass="boxDesign" />
                            <asp:LinkButton  ID="BtnSearch" runat="server" CssClass="save" />
                         </td>
                    </tr>
                </table>

                   <asp:datagrid id="searchresults" runat="server">
           </ContentTemplate>

             <Triggers>
                <asp:AsyncPostBackTrigger ControlID="BtnSearch" />
            </Triggers>
            </asp:UpdatePanel>

【问题讨论】:

  • 您是否在页面中添加了脚本管理器?

标签: asp.net ajax.net


【解决方案1】:

这看起来像一个熟悉的 .NET 错误。在 LinkBut​​ton 上设置 ClientIDMode="AutoID" 应该可以解决它(顺便说一下,您可以删除触发器。它不是必需的)。

【讨论】:

    【解决方案2】:

    一些解决方案:

    一个。尝试在 UpdatePanel 中提供 UpdateMode = Conditional 并尝试(当您提供触发器时 你必须定义这个)

    b.试试把&lt;table&gt;去掉,换成&lt;div&gt;,有时候更新面板对table标签不友好。

    c。如果上述方法不起作用,请先尝试删除触发器和更新模式条件,看看是否有效。因为如果这不起作用,则意味着更新面板内的内容有问题。您可能希望从一些控件开始深入了解您的问题。

    d。我看到用户控件被调用 - 检查您是否在这些用户控件中正确放置了更新面板。

    【讨论】:

    • 嗨,我尝试了您提出的解决方案,但没有让此控件按预期工作。我将按照您的建议检查更新面板内的内容。感谢您的帮助
    【解决方案3】:

    在更新面板中使用它:

    UpdateMode="Conditional" ChildrenAsTriggers="true"
    

    【讨论】:

      【解决方案4】:

      检查您的 HTML 源代码是否包含 2 个或更多 &lt;form&gt; 标记。一个asp.net页面通常应该只有一个&lt;form&gt;标签。

      虽然这个问题一直被问到没有答案,但我遇到了类似的问题,但发现了更新面板不起作用的原因:

      如果您在某段 HTML 中有一个 &lt;form&gt; 标记,然后将该 HTML 片段插入到母版页的现有 &lt;form&gt; 标记中,您就会遇到问题。每次运行母版页的子页面并单击提交按钮时,按钮应该运行的代码都不会执行。相反,尽管有更新面板,但整个页面都会刷新,并且它还可能在页面的 URL 中添加一个查询字符串。

      母版页的嵌套&lt;form&gt; 标记是造成这种情况的原因。一旦你删除了额外的&lt;form&gt; 标签,一切都应该可以正常工作。

      希望这对某人有所帮助。

      【讨论】:

      • 您好,我已经编辑了您的答案,减少了讲故事的内容,并以一种更切中要害且与您的经验联系更少的格式。这对以后的读者更有帮助。
      【解决方案5】:

      您错过了触发事件。您的触发器应如下所示

      <Triggers>
                  <asp:AsyncPostBackTrigger ControlID="BtnSearch" EventName="Click" />
      </Triggers>
      

      不要忘记将更新面板的UpdateMode 属性设置为Conditional

      这是一个参考::Using Triggers in an UpdatePanel in ASP.NET 4.0 C#

      【讨论】:

      • 感谢您回答 Krihandu。如果您查看我的代码底部,您会发现我包含了触发事件。我试图输入事件名称“Click”,“OnClick”ecc,但没有任何效果。我在同一页面上使用其他扩展器,它们工作正常。有什么线索吗? tnx
      • 如果我没记错的话,你不需要触发器来触发 UpdatePanel 中的控件。你的数据网格标签也没有关闭
      • 别忘了将更新面板的UpdateMode属性设置为Conditional。顺便说一句,我在您的代码中找不到任何触发事件。
      • 我尝试过使用和不使用触发事件,但是当我单击按钮 btnSearch 时,它会在整个页面上创建一个回发。我开始认为这是一个错误
      猜你喜欢
      • 2014-12-10
      • 1970-01-01
      • 2013-11-16
      • 2013-12-20
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多