Heim > Web-Frontend > js-Tutorial > Hauptteil

Erlernen Sie ganz einfach das jQuery-Plug-in EasyUI EasyUI, um grundlegende Vorgänge des Baumnetzwerks (2)_jquery zu implementieren

WBOY
Freigeben: 2016-05-16 15:28:40
Original
1028 Leute haben es durchsucht

1. Dynamisches Laden des EasyUI-Baumrasters
Das dynamische Laden von Baumgittern hilft beim Laden teilweiser Datenzeilen vom Server und vermeidet so lange Wartezeiten beim Laden großer Datenmengen. Dieses Tutorial zeigt Ihnen, wie Sie ein TreeGrid mit dynamischen Ladefunktionen erstellen.

Erstellen Sie ein Baumgitter (TreeGrid)

 <table title="Products" class="easyui-treegrid" style="width:700px;height:300px"
  url="treegrid3_getdata.php"
  rownumbers="true"
  idField="id" treeField="name">
 <thead>
  <tr>
  <th field="name" width="250">Name</th>
  <th field="quantity" width="100" align="right">Quantity</th>
  <th field="price" width="150" align="right" formatter="formatDollar">Price</th>
  <th field="total" width="150" align="right" formatter="formatDollar">Total</th>
  </tr>
 </thead>
 </table>
Nach dem Login kopieren

Serverseitiger Code
treegrid3_getdata.php

$id = isset($_POST['id']) &#63; intval($_POST['id']) : 0;
 
include 'conn.php';
$result = array();
$rs = mysql_query("select * from products where parentId=$id");
while($row = mysql_fetch_array($rs)){
 $row['state'] = has_child($row['id']) &#63; 'closed' : 'open';
 $row['total'] = $row['price']*$row['quantity'];
 array_push($result, $row);
}
 
echo json_encode($result);
 
function has_child($id){
 $rs = mysql_query("select count(*) from products where parentId=$id");
 $row = mysql_fetch_array($rs);
 return $row[0] > 0 &#63; true : false;
}
Nach dem Login kopieren

2. Paginierung zum EasyUI-Baumraster hinzufügen
Im zweiten Teil erfahren Sie, wie Sie einem Baumraster (TreeGrid) mit dynamischen Ladefunktionen eine Paginierung hinzufügen.

Erstellen Sie ein Baumgitter (TreeGrid)

Um die Paginierungsfunktion von TreeGrid zu aktivieren, müssen Sie das Attribut „pagination:true“ hinzufügen, damit die Parameter „page“ und „rows“ beim Laden der Seite an den Server gesendet werden.

 <table title="Products" class="easyui-treegrid" style="width:700px;height:300px"
  data-options="
  url: 'treegrid4_getdata.php',
  rownumbers: true,
  pagination: true,
  pageSize: 2,
  pageList: [2,10,20],
  idField: 'id',
  treeField: 'name',
  onBeforeLoad: function(row,param){
   if (!row) { // load top level rows
   param.id = 0; // set id=0, indicate to load new page rows
   }
  }
  ">
 <thead>
  <tr>
  <th field="name" width="250">Name</th>
  <th field="quantity" width="100" align="right">Quantity</th>
  <th field="price" width="150" align="right" formatter="formatDollar">Price</th>
  <th field="total" width="150" align="right" formatter="formatDollar">Total</th>
  </tr>
 </thead>
 </table>
Nach dem Login kopieren

Serverseitiger Code

treegrid4_getdata.php

$page = isset($_POST['page']) &#63; intval($_POST['page']) : 1;
$rows = isset($_POST['rows']) &#63; intval($_POST['rows']) : 10;
$offset = ($page-1)*$rows;
 
$id = isset($_POST['id']) &#63; intval($_POST['id']) : 0;
 
include 'conn.php';
 
$result = array();
if ($id == 0){
 $rs = mysql_query("select count(*) from products where parentId=0");
 $row = mysql_fetch_row($rs);
 $result["total"] = $row[0];
 
 $rs = mysql_query("select * from products where parentId=0 limit $offset,$rows");
 $items = array();
 while($row = mysql_fetch_array($rs)){
 $row['state'] = has_child($row['id']) &#63; 'closed' : 'open';
 array_push($items, $row);
 }
 $result["rows"] = $items;
} else {
 $rs = mysql_query("select * from products where parentId=$id");
 while($row = mysql_fetch_array($rs)){
 $row['state'] = has_child($row['id']) &#63; 'closed' : 'open';
 $row['total'] = $row['price']*$row['quantity'];
 array_push($result, $row);
 }
}
 
echo json_encode($result);
 
function has_child($id){
 $rs = mysql_query("select count(*) from products where parentId=$id");
 $row = mysql_fetch_array($rs);
 return $row[0] > 0 &#63; true : false;
}
Nach dem Login kopieren

Zu den an den Server gesendeten Parametern gehören:
Seite: Die aktuell zu ladende Seite.
Zeilen: Seitengröße.
id: Der ID-Wert der übergeordneten Zeile, zu der die vom Server zurückgegebene Zeile hinzugefügt wird.
Beim Erweitern eines Zeilenknotens ist der „id“-Wert größer als 0. Beim Ändern der Seitenzahl sollte der „id“-Wert auf 0 gesetzt werden, um die ladende Unterzeile zu platzieren.
3. EasyUI-Baumgitter-Lay-Loading-Knoten
Manchmal verfügen wir bereits über vollständige hierarchische TreeGrid-Daten. Wir möchten auch, dass TreeGrid Knoten hierarchisch langsam lädt. Zunächst werden nur die Knoten der obersten Ebene geladen. Klicken Sie dann auf das Erweiterungssymbol des Knotens, um seine untergeordneten Knoten zu laden. Dieses Tutorial zeigt, wie man ein TreeGrid mit Lazy Loading erstellt.

Erstellen Sie ein Baumgitter (TreeGrid)

 <table id="test" title="Folder Browser" class="easyui-treegrid" style="width:700px;height:300px"
  data-options="
  url: 'data/treegrid_data.json',
  method: 'get',
  rownumbers: true,
  idField: 'id',
  treeField: 'name',
  loadFilter: myLoadFilter
  ">
 <thead>
  <tr>
  <th field="name" width="220">Name</th>
  <th field="size" width="100" align="right">Size</th>
  <th field="date" width="150">Modified Date</th>
  </tr>
 </thead>
 </table>
Nach dem Login kopieren

Um ladende untergeordnete Knoten zu platzieren, müssen wir das Attribut „children“ für jeden Knoten umbenennen. Wie im folgenden Code gezeigt, wird die Eigenschaft „children“ in „children1“ umbenannt. Wenn ein Knoten erweitert wird, rufen wir die Methode „append“ auf, um die Daten seines untergeordneten Knotens zu laden.
'loadFilter'-Code

 function myLoadFilter(data,parentId){
 function setData(){
  var todo = [];
  for(var i=0; i<data.length; i++){
  todo.push(data[i]);
  }
  while(todo.length){
  var node = todo.shift();
  if (node.children){
   node.state = 'closed';
   node.children1 = node.children;
   node.children = undefined;
   todo = todo.concat(node.children1);
  }
  }
 }
 
 setData(data);
 var tg = $(this);
 var opts = tg.treegrid('options');
 opts.onBeforeExpand = function(row){
  if (row.children1){
  tg.treegrid('append',{
   parent: row[opts.idField],
   data: row.children1
  });
  row.children1 = undefined;
  tg.treegrid('expand', row[opts.idField]);
  }
  return row.children1 == undefined;
 };
 return data;
 }
Nach dem Login kopieren

Die oben genannten Vorgänge sind verwandte Vorgänge für Baumnetzwerke. Ich hoffe, dass sie für das Lernen aller hilfreich sind. Sie können sie in Verbindung mit dem vorherigen Artikel studieren und unerwartete Gewinne erzielen.

Lesen Sie verwandte Artikel: "Einfaches Erlernen des jQuery-Plug-ins EasyUI EasyUI zum Erstellen eines Baumnetzwerks (1)"

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!