在CSDN论坛上看到一个问题:定时更新GridView的某一列中的状态文本。马上就有了思路:GridView最后会生成表格,所以我们在页面中通过Ajax更新表格的列,从而达到ajax更新GridView的效果。
具体实现:
准备一个xml文件,用于存储要更新的数据,在页面中启动一个定时器,每隔5秒钟调用一个函数,函数里边通过$.ajax获取xml中的数据,解析xml,遍历表格行,匹配要更新的数据,更新。
getuserlist.xml
定义一个UserList的根节点,下边每个UserItem对应一条数据,UID可以理解成主键,UStatus是最新的状态。
<?xml version="1.0" encoding="utf-8" ?> <UserList> <UserItem><UID>1</UID><UStatus>关闭</UStatus></UserItem> <UserItem><UID>2</UID><UStatus>关闭</UStatus></UserItem> <UserItem><UID>3</UID><UStatus>开放</UStatus></UserItem> </UserList>
test.html
具体的逻辑都写到这里边了。
<html> ?<head> ??<title>Ajax Update Table Column</title> ??<script src="jquery-1.3.1.min.js" type="text/javascript"></script> ??<script type="text/javascript"> ???window.onload=function(){ ???//每隔5秒检查一下数据 ???window.setInterval(checkStatus,5000); ???}; ?? ???//检查数据 ???function checkStatus(){ ????//ajax请求数据 ????$.ajax({ ?????//换成你的文件,构造xml格式的数据就行了 ????url: 'getuserlist.xml', ????//请求类型 ????type: 'GET', ????//数据格式 ????dataType: 'xml', ????//超时时间:1秒 ????timeout: 2000, ????//加载数据发生错误 ????error:function (XMLHttpRequest, textStatus, errorThrown) { ?????alert("XMLHttpRequest="+XMLHttpRequest.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown); ????}, ????//成功加载数据 ????success: function(xml){ //遍历表格的行,需要给表格定义一个ID ?????$("#userListTable tr").each(function(){ //获取行的第一列,这里边保存了XML中对应的UID信息 ???????var trID=$(this).find("td").eq(0).text(); //数据的新状态 ???????var trStatus=""; //遍历xml中的UserItem ??????? $(xml).find("UserList > UserItem").each(function(){ //获取UID和UStatus的值 ??????var uid = $(this).find("UID").text(); ??????var ustatus = $(this).find("UStatus").text(); //比对当前行的ID和UID,如果相等,给数据的新状态赋值 ????????if(trID==uid){ ?????????trStatus=ustatus; ????????} ?????? }); //如果数据的新状态不为空,则更新单元格中现实的文本 ?????? if(trStatus!=""){ ??????$(this).find("td").eq(2).text(trStatus); ?????? } ??????}); ????} ???? }); ???} ??</script> ?<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ?</head> ?<body> <!-- 这个表格有三列 ID:数据的ID,相当于主键,用于从xml中查询新数据 Name:只是显示 Status:要更新的列 --> ??<table border="1" id="userListTable"> ???<tr><th>ID</th><th>Name</th><th>Status</th></tr> ???<tr><td>1</td><td>张三</td><td>开放</td></tr> ???<tr><td>2</td><td>李四</td><td>开放</td></tr> ???<tr><td>3</td><td>王五</td><td>开放</td></tr> ??</table> ?</body> </html>
最后将所需文件放到一个可以浏览的站点下边,打开test.html。
等待5秒钟,就可以看到效果了。
因为IE的问题,直接在文件夹下打开会出现不能解析xml文件(parsererror)的问题,所以建议放到可以运行的站点下边,或者用别的浏览器打开。
关键字: ajax更新gridview jquery 更新列
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论