document.getElementById("<%=Button1.ClientID %>").click();
PostBackTrigger

解决方案 »

  1.   

    重量级的UpdatePanel跟轻量级的ScriptService是不可同时兼容的(选择一个)。
      

  2.   

    如果你使用UpdatePanel来局部刷新GridView,那么脚本也是触发一个页面回发。例如:using System;
    using System.Web.UI;public partial class Test_Default : System.Web.UI.Page, IPostBackEventHandler
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "RefreshMyGrid",
                "function RefreshMyGrid(){" + this.Page.ClientScript.GetPostBackEventReference(this.Page, "RefreshGrid") +
                ";}", true);
        }    public void RaisePostBackEvent(string eventArgument)
        {
            if (eventArgument == "RefreshGrid")
            {
                this.GridView1.DataBind();
                this.UpdataPanel1.Update();
            }
        }Page_load代码向客户端注册了一个javascript函数RegreshMyGrid,你的脚本可以调用它来刷新 GridView。因为轻量级的Ajax它不能去创建页面(包括页面上的GridView),所以不可能像普通的asp.net页面代码那样去处理页面上的控件。当你使用轻量级的Ajax来实现稍显复杂一点的交互操作,你需要完全自己去处理所有状态,而后台跟页面就毫无关系,使用asmx是最贴近这种编程的概念(使用Page中的函数则是一种误解)。
      

  3.   

    轻量级的通过Ajax来输出GridView的一个最“底”级的例子我在帖子
    http://topic.csdn.net/u/20090924/17/9686c694-ab5a-4481-8097-badcb6d9747b.html
    说它最“底”级,是因为这其实只能输出一次而已。然而如果你要做一个用户交互操作起来感觉还算凑合好用的GridView,你需要写大量的javascript脚本代码,而且随着页面设计稍微丰富,这种脚本很快变得特别繁杂和难以维护。这里我就先不说了(因为我现在都建议去用silverlight、通过blend来比较舒服开发一个Grid应用然后嵌入asp.net程序中)。回过头来看上面的重量级Ajax的实现,可能有几个知识点要提醒你:
    1. IPostbackEventHandler,这是所谓“客户端调用服务器端”的关键。它要求你调用一次GetPostBackEventReference方法来产生注册脚本内容,并且写一个RaisePostBackEvent方法来处理回调。
    2. 在回调处理方法中,你可以调用UpdatePanel类型控件的Update方法,想刷新哪个UpdatePanel就刷新哪一个,可以同时刷新多个UpdatePanel。只要哪个控件改变了,就刷新它的UpdatePanel容器。
      

  4.   

    sp1234,经过测试,我发现我在页面实现IPostBackEventHandler接口,然后在前台调用生成的Javascript函数,还是会引发整个页面的刷新,有办法不进行整个页面的刷新吗?