首頁  >  文章  >  web前端  >  利用jQuery及AJAX技術定時更新GridView的某一列資料_jquery

利用jQuery及AJAX技術定時更新GridView的某一列資料_jquery

WBOY
WBOY原創
2016-05-16 15:27:441252瀏覽

看到一個問題:定時更新GridView的某一列中的狀態文字。馬上就有了想法:GridView最後會產生表格,所以我們在頁面中透過Ajax更新表格的列,從而達到ajax更新GridView的效果。

具體實作:

準備一個xml文件,用於儲存要更新的數據,在頁面中啟動一個計時器,每隔5秒鐘調用一個函數,函數裡邊透過$.ajax獲取xml中的數據,解析xml,遍歷表格行,匹配要更新的數據,更新。

getuserlist.xml

定義一個UserList的根節點,下邊每個UserItem對應一條數據,UID可以理解成主鍵,UStatus是最新的狀態。

<&#63;xml version="1.0" encoding="utf-8" &#63;>
<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)的問題,所以建議放到可以執行的網站下邊,或是用別的瀏覽器開啟。

PS:GridView 是 DataGrid的後繼控件,在 framework 2 中,雖然還存在DataGrid,但是GridView已經走上了歷史的前台,取代DataGrid的趨勢已是勢不可擋。 GridView和DataGrid功能相似,都是在web頁面中顯示資料來源中的數據,將資料來源中的一行數據,也就是一筆記錄,顯示為在web頁面上輸出表格中的一行。
GridView相對於DataGrid來說,具有如下優勢,功能上更加豐富,因為提供了智能標記面板(也就是show smart tag)更加易用方便,常用的排序、分頁、更新、刪除等操作可以零代碼實現!具有PagerTemplate屬性,可以自訂使用者導覽頁面,也就是說分頁的控制更隨心所欲。 GridView和DataGrid在事件模型上也多有不同之處,DataGrid控制引發的都是單一事件,而GridView控制項會引發兩個事件,一個在操作前發生,一個在操作後發生,操作前的事件多位***ing事件,操作後的事件多位元***ed事件,例如Sorting 事件和sorted 事件,RowDeleting和RowDeleted事件。
Listview和Gridview的刷新介面的方式是呼叫adapter.notifyDataSetChanged()進行介面刷新。
但是此方法有其弊端,他是將介面中的資料全部刷新一遍,不論資料有沒有變化。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn