Gunakan teknologi jQuery dan AJAX untuk mengemas kini lajur tertentu GridView data_jquery

WBOY
Lepaskan: 2016-05-16 15:27:44
asal
1286 orang telah melayarinya

Saya melihat masalah: kemas kini teks status secara kerap dalam lajur GridView. Idea segera muncul di fikiran: GridView akhirnya akan menjana jadual, jadi kami mengemas kini lajur jadual melalui Ajax pada halaman untuk mencapai kesan ajax mengemas kini GridView.

Pelaksanaan terperinci:

Sediakan fail xml untuk menyimpan data untuk dikemas kini, mulakan pemasa dalam halaman dan panggil fungsi setiap 5 saat Fungsi menggunakan $.ajax untuk mendapatkan data dalam xml, menghuraikan xml dan melintasi jadual. Baris yang sepadan dengan data yang akan dikemas kini dikemas kini.

getuserlist.xml

Tentukan nod punca UserList Setiap UserItem di bawah sepadan dengan sekeping data boleh difahami sebagai kunci utama, dan UStatus ialah status terkini.

<&#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>
Salin selepas log masuk

test.html

Logik khusus ditulis di sini.

<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>

Salin selepas log masuk

Akhir sekali, letakkan fail yang diperlukan di bawah tapak boleh semak imbas dan buka test.html.
Tunggu 5 saat dan anda akan nampak kesannya.

Disebabkan masalah dengan IE, membukanya terus dalam folder akan menyebabkan masalah tidak dapat menghuraikan fail xml (parsererror), jadi disyorkan untuk meletakkannya di bawah tapak yang boleh dijalankan, atau membukanya dengan pelayar lain.

PS: GridView ialah kawalan pengganti DataGrid Dalam rangka kerja 2, walaupun DataGrid masih wujud, GridView telah muncul di hadapan dalam sejarah dan trend menggantikan DataGrid tidak dapat dihalang. GridView dan DataGrid mempunyai fungsi yang serupa Kedua-duanya memaparkan data daripada sumber data pada halaman web, dan memaparkan baris data dalam sumber data, iaitu rekod, sebagai baris dalam jadual output pada halaman web.
Berbanding dengan DataGrid, GridView mempunyai kelebihan berikut dan lebih kaya dengan fungsi Kerana ia menyediakan panel tag pintar (iaitu, tunjukkan teg pintar), ia lebih mudah digunakan dan lebih mudah digunakan seperti pengisihan, halaman, pengemaskinian , dan pemadaman boleh dilaksanakan dengan kod sifar! Dengan atribut PagerTemplate, halaman navigasi pengguna boleh disesuaikan, yang bermaksud bahawa kawalan paging adalah lebih sewenang-wenangnya. GridView dan DataGrid juga mempunyai banyak perbezaan dalam model acara Kawalan DataGrid mencetuskan satu peristiwa, manakala kawalan GridView mencetuskan dua peristiwa, satu sebelum operasi dan satu selepas operasi adalah berbilang , acara selepas operasi adalah berbilang acara ***ed, seperti acara Isih dan acara diisih, RowDeleting dan acara RowDeleted.
Cara untuk menyegarkan antara muka Listview dan Gridview adalah dengan memanggil adapter.notifyDataSetChanged() untuk menyegarkan antara muka.
Walau bagaimanapun, kaedah ini mempunyai kelemahannya. Ia menyegarkan semua data dalam antara muka, tidak kira sama ada data telah berubah atau tidak.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan