使用jquery的ajax发送请求调动后台绑定的gridview,之后页面可以呈现数据,但是我点击另一个按钮在后台遍历gridview时,gridview的rows丢失了,我的理解是gridview的视图状态没保存,因为绑定之后没有经过页面周期,gridview的视图状态还是初始状态。请问各位有什么好的解决方法。或者有什么方法手动保存gridview的视图状态。GridViewAjaxviewstate

解决方案 »

  1.   

    你有if(!IsPostBack)么,要不贴出你cs代码
      

  2.   

                    //异步绑定gridview
                    $.ajax({
                        type: "post",
                        url: "Default.aspx",
                        data: "op=bind",
                        beforeSend: function()
                        {
                            $("#divMsg").text("加载中");
                            $("#divMsg").css("display","block");
                        },
                        complete: function()
                        {
                            $("#divMsg").css("display","none");
                        },
                        success: function (data)
                        {
                            if (data!="")
                            {
                                $("#divGrid")[0].innerHTML=data;
                            }
                            
                        }
                        
                    });    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.txtConnString.Text = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            }        if (Request["op"] != null)
            {
                if (Request["op"].ToString() == "bind")
                {
                    InitGvInAjax();
                }
            }
        }    protected void InitGvInAjax()
        {
            InitGv();        Thread.Sleep(2000);
            StringBuilder sb = new System.Text.StringBuilder();
            StringWriter sw = new System.IO.StringWriter(sb);
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            gvTables.RenderControl(htw);
            Response.Write("局部刷新网格:" + sb.ToString());
            Response.End();
        }
      

  3.   

     
            if (Request["op"] != null)
            {
                if (Request["op"].ToString() == "bind")
                {
                    InitGvInAjax();
                }
            }
    放到if(!IsPostBack)里面应该也没问题的吧
      

  4.   

    试了一下,还是一样的。问题是我已经绑定了gridview,而且有值,但是点击另一个按钮在后台遍历的时候gridview的数据都丢失了。我看了下页面的HTML代码,我有传统的方法绑定。viewstate里的有很多数据,有网格的HTML代码,用ajax绑定之后viewstate只有一点数据,而且没有网格的HTML代码.