利用jQuery及AJAX技術(shù)定時(shí)更新GridView的某一列數(shù)據(jù)
看到一個(gè)問題:定時(shí)更新GridView的某一列中的狀態(tài)文本。馬上就有了思路:GridView最后會生成表格,所以我們在頁面中通過Ajax更新表格的列,從而達(dá)到ajax更新GridView的效果。
具體實(shí)現(xiàn):
準(zhǔn)備一個(gè)xml文件,用于存儲要更新的數(shù)據(jù),在頁面中啟動一個(gè)定時(shí)器,每隔5秒鐘調(diào)用一個(gè)函數(shù),函數(shù)里邊通過$.ajax獲取xml中的數(shù)據(jù),解析xml,遍歷表格行,匹配要更新的數(shù)據(jù),更新。
getuserlist.xml
定義一個(gè)UserList的根節(jié)點(diǎn),下邊每個(gè)UserItem對應(yīng)一條數(shù)據(jù),UID可以理解成主鍵,UStatus是最新的狀態(tài)。
<?xml version="1.0" encoding="utf-8" ?> <UserList> <UserItem><UID>1</UID><UStatus>關(guān)閉</UStatus></UserItem> <UserItem><UID>2</UID><UStatus>關(guān)閉</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秒檢查一下數(shù)據(jù)
window.setInterval(checkStatus,5000);
};
//檢查數(shù)據(jù)
function checkStatus(){
//ajax請求數(shù)據(jù)
$.ajax({
//換成你的文件,構(gòu)造xml格式的數(shù)據(jù)就行了
url: 'getuserlist.xml',
//請求類型
type: 'GET',
//數(shù)據(jù)格式
dataType: 'xml',
//超時(shí)時(shí)間:1秒
timeout: 2000,
//加載數(shù)據(jù)發(fā)生錯(cuò)誤
error:function (XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest="+XMLHttpRequest.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
},
//成功加載數(shù)據(jù)
success: function(xml){
//遍歷表格的行,需要給表格定義一個(gè)ID
$("#userListTable tr").each(function(){
//獲取行的第一列,這里邊保存了XML中對應(yīng)的UID信息
var trID=$(this).find("td").eq(0).text();
//數(shù)據(jù)的新狀態(tài)
var trStatus="";
//遍歷xml中的UserItem
$(xml).find("UserList > UserItem").each(function(){
//獲取UID和UStatus的值
var uid = $(this).find("UID").text();
var ustatus = $(this).find("UStatus").text();
//比對當(dāng)前行的ID和UID,如果相等,給數(shù)據(jù)的新狀態(tài)賦值
if(trID==uid){
trStatus=ustatus;
}
});
//如果數(shù)據(jù)的新狀態(tài)不為空,則更新單元格中現(xiàn)實(shí)的文本
if(trStatus!=""){
$(this).find("td").eq(2).text(trStatus);
}
});
}
});
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<!--
這個(gè)表格有三列
ID:數(shù)據(jù)的ID,相當(dāng)于主鍵,用于從xml中查詢新數(shù)據(jù)
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>
最后將所需文件放到一個(gè)可以瀏覽的站點(diǎn)下邊,打開test.html。
等待5秒鐘,就可以看到效果了。
因?yàn)镮E的問題,直接在文件夾下打開會出現(xiàn)不能解析xml文件(parsererror)的問題,所以建議放到可以運(yùn)行的站點(diǎn)下邊,或者用別的瀏覽器打開。
PS:GridView 是 DataGrid的后繼控件,在 framework 2 中,雖然還存在DataGrid,但是GridView已經(jīng)走上了歷史的前臺,取代DataGrid的趨勢已是勢不可擋。GridView和DataGrid功能相似,都是在web頁面中顯示數(shù)據(jù)源中的數(shù)據(jù),將數(shù)據(jù)源中的一行數(shù)據(jù),也就是一條記錄,顯示為在web頁面上輸出表格中的一行。
GridView相對于DataGrid來說,具有如下優(yōu)勢,功能上更加豐富,因?yàn)樘峁┝酥悄軜?biāo)記面板(也就是show smart tag)更加易用方便,常用的排序、分頁、更新、刪除等操作可以零代碼實(shí)現(xiàn)!具有PagerTemplate屬性,可以自定義用戶導(dǎo)航頁面,也就是說分頁的控制更加隨心所欲。GridView和DataGrid在事件模型上也多有不同之處,DataGrid控件引發(fā)的都是單個(gè)事件,而GridView控件會引發(fā)兩個(gè)事件,一個(gè)在操作前發(fā)生,一個(gè)在操作后發(fā)生,操作前的事件多位***ing事件,操作后的事件多位***ed事件,比如Sorting 事件和sorted 事件,RowDeleting和RowDeleted事件。
Listview和Gridview的刷新界面的方式是調(diào)用adapter.notifyDataSetChanged()進(jìn)行界面刷新。
但是此方法有其弊端,他是將界面中的數(shù)據(jù)全部刷新一遍,不論數(shù)據(jù)有沒有變化。
- bootstrapTable+ajax加載數(shù)據(jù) refresh更新數(shù)據(jù)
- Vue.js 通過jQuery ajax獲取數(shù)據(jù)實(shí)現(xiàn)更新后重新渲染頁面的方法
- Vue2.X 通過AJAX動態(tài)更新數(shù)據(jù)
- jquery+ajaxform+springboot控件實(shí)現(xiàn)數(shù)據(jù)更新功能
- jquery ajax 局部無刷新更新數(shù)據(jù)的實(shí)現(xiàn)案例
- Ajax異步無刷新對局部數(shù)據(jù)更新
- ajax頁面無刷新 IE下遭遇Ajax緩存導(dǎo)致數(shù)據(jù)不更新的問題
- ajax異步刷新實(shí)現(xiàn)更新數(shù)據(jù)庫
- ajax更新數(shù)據(jù)后,jquery、jq失效問題
- Ajax實(shí)現(xiàn)表格中信息不刷新頁面進(jìn)行更新數(shù)據(jù)
相關(guān)文章
jquery通過visible來判斷標(biāo)簽是否顯示或隱藏
這篇文章主要介紹了jquery如何判斷標(biāo)簽是否顯示或隱藏,使用到了visible屬性,大家可以學(xué)習(xí)下2014-05-05
為Jquery EasyUI 組件加上清除功能的方法(詳解)
下面小編就為大家?guī)硪黄獮镴query EasyUI 組件加上清除功能的方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
Jquery實(shí)現(xiàn)頁面加載時(shí)彈出對話框代碼
將以下代碼置于head標(biāo)簽中即可實(shí)現(xiàn)加載時(shí)彈出對話框的效果,感興趣的朋友可以參考下哈,希望可以幫助到你2013-04-04
超棒的響應(yīng)式布局jQuery插件Freetile.js
隨著頁面扁平化的普及,越來越多的網(wǎng)站都開始使用響應(yīng)式布局,作為一個(gè)優(yōu)秀的前端工作者,必須要精通的,這里給大家推薦一款響應(yīng)式布局的jQuery插件。2014-11-11
基于jQuery實(shí)現(xiàn)數(shù)字滾動效果
本文主要分享了基于jQuery實(shí)現(xiàn)數(shù)字滾動效果的示例代碼,附源碼下載。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01
JQuery實(shí)現(xiàn)當(dāng)鼠標(biāo)停留在某區(qū)域3秒后自動執(zhí)行
這篇文章主要介紹了JQuery實(shí)現(xiàn)當(dāng)鼠標(biāo)停留在某區(qū)域3秒后自動執(zhí)行,可以應(yīng)用于很多場景,需要的朋友可以參考下2014-09-09

