使用JavaScript或jQuery手动更新UpdatePanel

Rus*_*sby 12 .net javascript asp.net jquery updatepanel

是否可以使用JavaScript或jQuery手动更新UpdatePanel?

我所拥有的是我页面顶部的TextBox.当用户离开TextBox我想运行一些服务器代码(它会将记录添加到我的数据库),然后在页面底部我有一个UpdatePanel,它将被刷新.UpdatePanel有一个GridView,它将为添加的记录添加一个条目)

Azh*_*har 21

只需调用此javascript函数即可.这里UpdatePanel1是updatepanel的ID

 <script type="text/javascript">

            var UpdatePanel1 = '<%=UpdatePanel1.ClientID%>';

            function ShowItems()
            {
               if (UpdatePanel1 != null) 
               {
                   __doPostBack(UpdatePanel1, '');
               }
            }       

        </script>
Run Code Online (Sandbox Code Playgroud)


Rus*_*sby 12

我想我得到了答案......必须在UpdatePanel中创建一个隐藏按钮然后调用

__doPostBack('<%= Button.ClientID %>','');
Run Code Online (Sandbox Code Playgroud)


Cul*_*lme 9

虽然这是一个老问题,但我认为应该提到一个更多的解决方案.

如果您不希望依赖隐藏的按钮或虚幻的__doPostBack,则可以选择"ClientScript.GetPostBackEventReference",如此(同样相当古老但仍然很棒)页面所述:

http://www.4guysfromrolla.com/articles/033110-1.aspx

简而言之,如果您的UpdatePanel声明如下:

<asp:UpdatePanel ID="MyUpdatePanel" runat="server">...</UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

然后在JavaScript中,您可以调用此服务器端代码生成的脚本:

ClientScript.GetPostBackEventReference(MyUpdatePanel, "")
Run Code Online (Sandbox Code Playgroud)

因此,在您的aspx页面中,您可以使用以下内容:

function MyJavaScriptFunction(){
   doSomeStuff();
   <%=ClientScript.GetPostBackEventReference(MyUpdatePanel, "")%>
}
Run Code Online (Sandbox Code Playgroud)

解析页面时,<%和%>之间的代码将替换为实际的javascript调用,因此您可以通过在浏览器中查看页面的源代码来查看它.

它可能不比其他回复容易,但我更喜欢它,因为它不会引入任何额外的元素,__ doPostBack感觉就像一个黑客.:-)