【问题标题】:UpdatePanel update without trigger buttonUpdatePanel 更新无触发按钮
【发布时间】:2011-01-12 13:52:12
【问题描述】:

我有一个指定了 ContentTemplate 的 UpdatePanel。当页面加载时,用户可以在页面的其他部分做一些 AJAX 工作。然后,在该工作完成后,我想只更新 UpdatePanel 中的内容,但不按任何按钮等。当先前启动的 AJAX 工作完成时,我应该使用 JavaScript 自动完成。不手动点击触发按钮怎么办?

编辑:

好的,我已经遵循了 _doPostBack 规则,并且整个页面都已发布。

    <asp:UpdatePanel ID="panelAttachments" runat="server">
        <ContentTemplate>
    ........
        </ContentTemplate>
    </asp:UpdatePanel>
    <input type="text" name="test" onchange="__doPostBack('<%=panelAttachments.UniqueID %>',''); return false;" />
</td>

谢谢,帕维尔

【问题讨论】:

    标签: asp.net ajax updatepanel scriptmanager


    【解决方案1】:

    从 javascript 刷新更新面板:

    __doPostBack(updatePanelUniqueID,'');

    第一个参数是 UpdatePanel 的 UniqueID(不是 CientID)。第二个参数是您可以传递的可选参数,这些参数将可用于您的服务器代码。两者都由 ASP.NET 存储在隐藏的表单字段中,您可以在代码隐藏中访问它们:

    Request.Form["__EVENTTARGET"];
    Request.Form["__EVENTARGUMENT"];
    

    但是,如果您只想刷新面板并且不需要从客户端传递任何其他信息,则可以忽略第二个参数。

    如果您查看 ASP.NET 为异步回发控件生成的 HTML,您会发现正是这样。

    【讨论】:

    • 您能否展示如何调用该 javascript,例如从文本输入 TextChanged 事件?
    • &lt;asp:TextBox id="mytextbox" runat="server" onchange="__doPostBack('&lt;%=myUpdatePanel.UniqueID %&gt;','')" /&gt;
    • 另外,TextChanged 是服务器端事件,onchange 是文本框的客户端事件。 TextChanged 导致服务器代码在回发后运行。请注意,一旦焦点离开文本框控件,客户端事件就会触发。如果这是您想要的,那么示例是正确的,但是当您说“工作完成后”时,也许您不希望每次更改任何文本框时都发生这种情况?您可以将此钩子添加到您想要的任何客户端事件中,这可能不是您的情况的最佳方式。
    • 谢谢,我已经按照这个提示进行操作,但什么也没做,整个页面都是发布的,而不是 ajax - 有问题的详细信息。
    • 您添加了一个按钮,而不是文本框控件,所以它仍然要提交。添加UseSubmitBehavior="false" 和/或添加return false; 到javascript: onchange="__doPostBack('&lt;%=myUpdatePanel.UniqueID %&gt;',''); return false;" 这将取消控件的默认操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多