ホームページ  >  記事  >  ウェブフロントエンド  >  jQuery と AJAX テクノロジーを使用して、GridView data_jquery の特定の列を定期的に更新します。

jQuery と AJAX テクノロジーを使用して、GridView data_jquery の特定の列を定期的に更新します。

WBOY
WBOYオリジナル
2016-05-16 15:27:441252ブラウズ

問題が発生しました: GridView の列のステータス テキストを定期的に更新します。すぐにアイデアが思い浮かびました。GridView は最終的にテーブルを生成するので、ページ上の Ajax を介してテーブルの列を更新し、Ajax による GridView 更新の効果を実現します。

詳細な実装:

更新するデータを保存する XML ファイルを準備し、ページ内でタイマーを開始し、5 秒ごとに関数を呼び出します。関数は $.ajax を使用して XML 内のデータを取得し、XML を解析して走査します。更新対象のデータに一致する行が更新されます。

getuserlist.xml

UserList のルート ノードを定義します。以下の各 UserItem は主キーとして認識され、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)が発生するため、実行可能なサイト配下に置くか、開くことをお勧めします別のブラウザで。

追記: GridView は DataGrid の後継コントロールです。フレームワーク 2 では、DataGrid はまだ存在しますが、GridView は歴史の最前線にあり、DataGrid を置き換える傾向は止められません。 GridView と DataGrid には、どちらもデータ ソースからのデータを Web ページに表示し、データ ソース内のデータの行、つまりレコードを Web ページ上の出力テーブルの行として表示します。
GridView は DataGrid と比較して以下のような利点があり、スマート タグ パネル (スマート タグの表示) を提供するため、並べ替え、ページング、更新などのよく使用される操作がより簡単で便利です。 、削除はゼロコードで実装できます。 PagerTemplate 属性を使用すると、ユーザー ナビゲーション ページをカスタマイズできます。つまり、ページングの制御がより自由になります。 GridView と DataGrid には、イベント モデルにも多くの違いがあります。DataGrid コントロールは 1 つのイベントをトリガーしますが、GridView コントロールは操作の前に 1 つ、操作後に 1 つずつイベントをトリガーします。 、操作後のイベントは、Sorting イベントとsorted イベント、RowDeleting と RowDeleted イベントなどの複数の ***ed イベントです。
Listview と Gridview のインターフェイスを更新するには、adapter.notifyDataSetChanged() を呼び出してインターフェイスを更新します。
ただし、この方法には欠点があります。データが変更されたかどうかに関係なく、インターフェイス内のすべてのデータが更新されます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。