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