我有一个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')**">
只有当触发回发的控件在更新面板中或在更新面板的触发器集合中引用该控件时,它才会触发部分回发。
这会是问题所在吗?
要使用__doPostBack触发部分回发,您需要在__doPostBack调用中引用updatepanel ID,例如
__doPostBack('btnInsideUpdatePanel', '');
值得注意的是,第一个参数是ID,而不是ClientID。如果使用了clientID,则在回发时无法获得正确的事件处理。在这个论坛上查看答案
本文详细介绍
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
干杯