__PostBack和updatePanel进行全页更新

时间:2013-06-22 15:21:58

标签: c# asp.net ajax visual-studio updatepanel

我有一个LiteralText,当我点击我的控件时会更改数据。我阅读了一些指南,如果我在UpdatePanel中更新LiteralText,它应该只进行部分更新,但它会更新整个页面。

我还读了另一个指南,说明将__doPostBack更改为clientID但是也没有用。

所以这是我的aspx端代码:

<div id="modalbox" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
    aria-hidden="true">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server"  ChildrenAsTriggers="true" UpdateMode="Conditional">
        <ContentTemplate>
           //Some Codes
                    <asp:Literal ID="modalTitle" runat="server"></asp:Literal>
           //More Codes
        </ContentTemplate>
    </asp:UpdatePanel>

我的doPostBack代码:

        <script type="text/javascript">
            function changeModalTitle(eventTarget, parameter) {
                __doPostBack('<%=modalboxStaff.ClientID%>;', parameter)
            }
        </script>

调用两个代码的代码:

    <a href='#modalbox' data-toggle='modal' runat="server" id="modalboxStaff" **onclick="javascript:changeModalTitle('AddStaff', 'Sup World')**">

1 个答案:

答案 0 :(得分:2)

如果触发回发的控件位于更新面板中,或者在更新面板的触发器集合中引用了控件,则只会触发部分回发。

这可能是问题吗?

使用__doPostBack来触发部分回发 - 你需要在__doPostBack调用中引用updatepanel ID,例如。

__doPostBack('btnInsideUpdatePanel', '');

值得注意的是,第一个参数是ID而不是theClientID。如果使用clientID,则在回发时无法获得正确的事件处理。查看此论坛上的answer

本文提供了详细信息

http://encosia.com/easily-refresh-an-updatepanel-using-javascript/

任何帮助?

修改

我会考虑将您的锚点更改为“链接”按钮。锚点html控件不会像链接按钮那样引发页面事件(虽然我相信你所做的事情可以触发部分回发是公平的)。

以下链接非常适合您,如果您还没有看到它可能会有所帮助

http://weblogs.asp.net/jeffreyzhao/archive/2008/04/26/refresh-the-updatepanel-using-javascript-code.aspx

干杯