首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

ajax方式添加数据,再在gridview中显示出来,但是gridview始终显示不了新增的数据,必须刷新上页面才能看到

2013-01-01 
ajax方式添加数据,再在gridview中显示出来,但是gridview始终显示不了新增的数据,必须刷新下页面才能看到JS

ajax方式添加数据,再在gridview中显示出来,但是gridview始终显示不了新增的数据,必须刷新下页面才能看到
JS代码: 
 var xmlhttp;
       function Validation()
       {
            //实例化XMLHttpRequest对象
            
            if(window.XMLHttpRequest){
                xmlhttp = new XMLHttpRequest() ;//非IE浏览器下
            } else 
            {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") ;//IE浏览器下
            }

           // xmlhttp =new ActiveXObject ("Microsoft.XMLHTTP");
            //找到名为“Text1”的文本框
           // var name=document .getElementById ("Text1");
            //利用Open方法向指定URL
            //查询字符串“name”将文本框中的数据传送到目标页面
            
           var spec=document.getElementById("spec");
           var sbname=document.getElementById("sbname");
           var sblb=document.getElementById("sblb");
           var dept=document.getElementById("Label2");
           var num=document.getElementById("number");
          // alert(dept.innerText);
            xmlhttp.open("Post","ask.aspx?sbname="+encodeURI(sbname.options[sbname.selectedIndex].text) +"&sblb="+encodeURI(sblb.options[sblb.selectedIndex].text) +"&spec="+encodeURI(spec.options[spec.selectedIndex].text) +"&dept"+encodeURI(dept.innerText)+"&number="+num.value);
            //设置当服务器响应返回时用于处理响应的函数名
            xmlhttp .onreadystatechange=OnMessageBack;
            //送发请求encodeURI(encodeURI(sbname.options[spec.selectedIndex].text)) 
            xmlhttp .send(null);
       }
后台代码
 protected void adddate()
    {
        string sblb = Request.QueryString["sblb"];  //设备类别
        string sbname = Request.QueryString["sbname"];//设备名
        string spec= Request.QueryString["spec"];//设备规格
        //string dept= Request.QueryString["dept"];  //制单人部门
        string dept = Label2.Text;//制单人部门
        string num = Request.QueryString["number"];//申请数量


      //  Response.Write("<sript>alert("+dept+")</sript>");

        string sql = "select loginnamecn from loginname where autoid='" + Session["autoid"].ToString().Trim() + "'";

        SqlDataAdapter co = new SqlDataAdapter(sql, conn1);
        DataTable c = new DataTable();
        co.Fill(c);
        string console = c.Rows[0][0].ToString().Trim();//获取制单人中文名
        co.Dispose();
        c.Dispose();

        if (sbname == null || sblb == null || spec == null)
        {
            //this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "", "<script> alert('请将信息填写完整')</script>", false);
            return;
        }
        //验证是否重复添加了数据
        string sqlstr1 = "select name,spec,sblb from asktemp where dept='" + dept + "' and consoleid='" + Session["autoid"].ToString().Trim() + "'";
        bool b = true;
        SqlDataAdapter da = new SqlDataAdapter(sqlstr1, conn);
        DataTable dt = new DataTable();
        da.Fill(dt);
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            if ((dt.Rows[i][0].ToString().Trim().CompareTo(sbname) == 0) && (dt.Rows[i][1].ToString().Trim().CompareTo(spec) == 0) && (dt.Rows[i][2].ToString().Trim().CompareTo(sblb) == 0))
            {

                this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "", "<script> alert('名称为'+'" + sbname + "'+'规格为'+'" + spec + "'+'类别为'+'" + sblb + "'+'的数据已存在下表中,不要重复添加,如需改变数量请先删除原数据!')</script>", false);
                b = false;
                break;
            }
        }
        da.Dispose();
        dt.Dispose();
        if (b == false)
        {
            return;
        }
        string dw = getdw(sbname, sblb, spec);//获取物品单位


        string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        string sqlstr = "insert into asktemp (askno,console,consoleid,time,conf,mark,note,dept,sblb,spec,name,number)values('000','"//临时表中单号为000
         + console + "','"//制单人中文名
         + Session["autoid"].ToString().Trim() + "','"//制单人ID
         + time + "','0','0','"//时间,mark,conf
         + sbname + " " + spec + " " + num + dw + "','"//备注信息
         + dept + "','"//制单人所在部门
         + sblb + "','"//设备类别
         + spec + "','"//设备规格
         + sbname + "','"//设备名称
         + num + "')";//申请数量
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = sqlstr;
        cmd.Connection = conn;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
        gd1bing();//这个就是gridview1 的数据绑定
       
    }
gridview1 的数据绑定
 protected void gd1bing()
    {
//获取dept值
 string sql = "select ssfwz from loginname where autoid='" + Session["autoid"].ToString().Trim() + "'";
        SqlDataAdapter co = new SqlDataAdapter(sql, conn1);
        DataTable c = new DataTable();
        co.Fill(c);
        string dept= c.Rows[0][0].ToString().Trim();
        co.Dispose();
        c.Dispose();
 //获取数据值
       string sqlstr = "select * from asktemp where dept='"+dept+"' and consoleid='"+Session["autoid"].ToString().Trim()+"'";
      
      SqlDataAdapter da = new SqlDataAdapter(sqlstr, conn);
        DataTable dt = new DataTable();
        da.Fill(dt);
        GridView1.DataSource = dt;
        GridView1.DataBind();

    }
我的数据是添加到了数据库中,但是始终在gridview中显示不出刚才添加的那天数据,不知道是什么原因,看网上有说AJAX缓存的什么的,我刚接触AJAX 不是很懂 求大家指导!
[解决办法]
你是否出发了绑定过程呢,数据集改变,必须重新绑定才能显示
[解决办法]
你还没完全理解Ajax的处理过程,在上面的程序中你只是完成了异步请求,并没有对数据进行处理。在请求完成后需要判断返回状态,并把返回的数据绑定到UI。一般情况下这种绑定时在JS中做的
------解决方案--------------------


引用:
引用:你这种的话 。建议你直接把gridview换成div+css吧。  这样 ,你ajax return 后  好填充。要是这样的话那对内容的编辑。删除什么的不是老复杂了阿


其实没有那么复杂。习惯就好。  服务器控件的可操作性是没问题 。但是相反的性能上要比div+css要低很多 。而且会生成大量代码。 你可以看看 ,。基本IP量大些的网站。基本很少有用服务器控件的。

热点排行