Jquery easyui教程
目 錄
- 1基本拖放... 4
- 2構建購物車型拖放... 5
- 3建立課程表... 8
- 4選單和按鈕Menu and Button. 10
o 4.1建立簡單選單... 10
o 4.2建立連線按鈕... 11
o 4.3建立選單按鈕... 12
o 4.4建立拆分按鈕... 13
- 5建立邊框版面網頁... 15
o 5.1皮膚上的複合版面... 16
o 5.2建立可摺疊版面... 17
o 5.3建立TABS. 18
o 5.4動態新增tabs. 19
o 5.5建立XP式樣左皮膚... 20
- 6 DataGrid 資料格... 23
o 6.1 轉換HTML表格到DataGrid. 23
o 6.2 給DataGrid新增分頁... 25
o 6.3 得到DataGrid選擇行... 27
o 6.4 新增工具欄到DataGrid. 28
o 6.5 DataGrid凍結列... 30
o 6.6 動態改變DataGrid列... 31
o 6.7 格式化DataGrid列... 32
o 6.8 新增排序到DataGrid. 33
o 6.9 在DataGrid上的核取方塊... 36
o 6.10 自定義DataGrid分頁... 37
o 6.11使DataGrid能編輯... 38
o 6.12 DataGrid中合併單元格... 41
- 7 視窗... 44
o 7.1 我第一個視窗... 44
o 7.2 自定義視窗工具... 45
o 7.3 Window和Layout 46
o 7.4 建立對話方塊... 47
- 8 Tree. 50
- 8.1從標記建立tree. 51
- 8.2建立非同步Tree. 52
- 8.3 新增節點... 55
- 8.4 建立帶有checkbox節點的tree. 57
- 9 表單... 58
o 9.1 Ajax方式傳送表單... 58
o 9.2 給表單新增複合tree欄位... 59
o 9.3 驗證表單... 62
- 10 Documentation文件... 65
o 10.1 Base. 65
§ 10.1.1 EasyLoader 66
§ 10.1.2 Draggable. 67
§ 10.1.3 Droppable. 69
§ 10.1.4 Resizable. 70
o 10.2 layout 71
§ 10.2.1 Panel 71
§ 10.2.2 tabs 76
§ 10.2.3 accordion. 79
§ 10.2.4 layout 82
o 10.3 Menu and button. 83
o 10.4 form.. 88
o 10.5 window.. 101
o 10.6 Datagrid and tree. 107
概述
這個教程的目的是說明如何使用easyui框架容易的建立網頁。首先,你需要包含一些js和css檔案:
<link rel="stylesheet" type="text/css" href="../themes/default/easyui.css">
<script type="text/javascript" src="../jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="../jquery.easyui.min.js"></script>
easyui預定義了一些圖示css,這些css類可以顯示圖片背景(16×16)。使用這些類之前,需要包含:
<link rel="stylesheet" type="text/css" href="../themes/icon.css">
· 1基本拖放
這個教程顯示如何使HTML元素變得可拖放。這個例子會建立3個DIV元素然後讓它們變得可拖放。
首先,建立三個DIV元素:
<div id="dd1" class="dd-demo"></div>
<div id="dd2" class="dd-demo"></div>
<div id="dd3" class="dd-demo"></div>
讓第一個DIV元素可拖放,使用預設的拖放樣式。
$('#dd1').draggable();
讓第二個DIV元素使用proxy來拖放,proxy:'clone'表示proxy使用原始元素的複製。
$('#dd2').draggable({
proxy:'clone'
});
讓第三個DIV元素使用自定義proxy來拖放
$('#dd3').draggable({
proxy:function(source){
var p = $('<div class="proxy">proxy</div>');
p.appendTo('body');
return p;
}
});
· 2構建購物車型拖放
使用jQuery easyui,我們在web應用中就有了拖放的能力。這個教程顯示瞭如何構建購物車頁,它使使用者拖放他們希望購買的產品,更新購物籃的物品和價格。
顯示產品頁:
<ul class="products">
<li>
<a href="#" class="item">
<img src="shirt1.gif"/>
<div>
<p>Balloon</p>
<p>Price:$25</p>
</div>
</a>
</li>
<li>
<a href="#" class="item">
<img src="shirt2.gif"/>
<div>
<p>Feeling</p>
<p>Price:$25</p>
</div>
</a>
</li>
<!-- other products -->
</ul>
ul元素包含一些li元素以顯示產品。每一個產品的名稱和單價屬性在P元素中。
建立購物車:
<div class="cart">
<h1>Shopping Cart</h1>
<table id="cartcontent" style="width:300px;height:auto;">
<thead>
<tr>
<th field="name" width=140>Name</th>
<th field="quantity" width=60 align="right">Quantity</th>
<th field="price" width=60 align="right">Price</th>
</tr>
</thead>
</table>
<p class="total">Total: $0</p>
<h2>Drop here to add to cart</h2>
</div>
使用datagrid顯示購物籃專案。
拖曳產品副本
$('.item').draggable({
revert:true,
proxy:'clone',
onStartDrag:function(){
$(this).draggable('options').cursor = 'not-allowed';
$(this).draggable('proxy').css('z-index',10);
},
onStopDrag:function(){
$(this).draggable('options').cursor='move';
}
});
我們設定draggable屬性proxy為clone,所以拖曳元素使用clone效果。
將選擇的產品放入購物車
$('.cart').droppable({
onDragEnter:function(e,source){
$(source).draggable('options').cursor='auto';
},
onDragLeave:function(e,source){
$(source).draggable('options').cursor='not-allowed';
},
onDrop:function(e,source){
var name = $(source).find('p:eq(0)').html();
var price = $(source).find('p:eq(1)').html();
addProduct(name, parseFloat(price.split('$')[1]));
}
});
var data = {"total":0,"rows":[]};
var totalCost = 0;
function addProduct(name,price){
function add(){
for(var i=0; i<data.total; i++){
var row = data.rows[i];
if (row.name == name){
row.quantity += 1;
return;
}
}
data.total += 1;
data.rows.push({
name:name,
quantity:1,
price:price
});
}
add();
totalCost += price;
$('#cartcontent').datagrid('loadData', data);
$('div.cart .total').html('Total: $'+totalCost);
}
當放下產品時,我們得到產品的名稱和單價,然後呼叫addProduct函式更新購物籃。
· 3建立課程表
本教程顯示瞭如何使用jQuery easyui建立課程表。我們建立兩個表:在左面的課程列表和右面的時間表。你可以拖課程到時間表的單元格中。課程是<div class='item'>元素,時間格是<td class='drop'>元素。
顯示課程
<div class="left">
<table>
<tr>
<td><div class="item">English</div></td>
</tr>
<tr>
<td><div class="item">Science</div></td>
</tr>
<!-- other subjects -->
</table>
</div>
顯示時間表
<div class="right">
<table>
<tr>
<td class="blank"></td>
<td class="title">Monday</td>
<td class="title">Tuesday</td>
<td class="title">Wednesday</td>
<td class="title">Thursday</td>
<td class="title">Friday</td>
</tr>
<tr>
<td class="time">08:00</td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
</tr>
<!-- other cells -->
</table>
</div>
拖動左面的課程
$('.left .item').draggable({
revert:true,
proxy:'clone'
});
放置課程到時間表中
$('.right td.drop').droppable({
onDragEnter:function(){
$(this).addClass('over');
},
onDragLeave:function(){
$(this).removeClass('over');
},
onDrop:function(e,source){
$(this).removeClass('over');
if ($(source).hasClass('assigned')){
$(this).append(source);
} else {
var c = $(source).clone().addClass('assigned');
$(this).empty().append(c);
c.draggable({
revert:true
});
}
}
});
當使用者拖動左面的課程到右面的時間表中,onDrop函式被呼叫。源元素的副本被從左面拖動並且附加到到時間表的單元格中。當放置課程到時間表的單元格到另一個單元格時,簡單的移動它。
· 4選單和按鈕Menu and Button
- 4.1建立簡單選單
- 4.2建立連結按鈕
- 4.3建立選單按鈕
- 4.4建立分割按鈕
o 4.1建立簡單選單
在DIV標記中定義選單。像這樣:
<div id="mm" style="width:120px;">
<div onclick="javascript:alert('new')">New</div>
<div>
<span>Open</span>
<div style="width:150px;">
<div><b>Word</b></div>
<div>Excel</div>
<div>PowerPoint</div>
</div>
</div>
<div icon="icon-save">Save</div>
<div class="menu-sep"></div>
<div>Exit</div>
</div>
建立選單,你需要執行下列jQuery程式碼
$('#mm').menu();
//或者 $('#mm').menu(options);
當選單被建立時是不可見的,可使用show方法顯示或者hide方法隱藏:
$('#mm').menu('show', {
left: 200,
top: 100
});
現在,我們建立選單並在(200,100)處顯示。執行程式碼會得到:
o 4.2建立連線按鈕
通常使用<button>元素建立按鈕。連結按鈕使用A元素建立,事實上,連結按鈕是A元素但顯示為按鈕樣式。
建立連結按鈕,首先建立A元素:
<h3>DEMO1</h3>
<div style="padding:5px;background:#efefef;width:500px;">
<a href="#" class="easyui-linkbutton" icon="icon-cancel">Cancel</a>
<a href="#" class="easyui-linkbutton" icon="icon-reload">Refresh</a>
<a href="#" class="easyui-linkbutton" icon="icon-search">Query</a>
<a href="#" class="easyui-linkbutton">text button</a>
<a href="#" class="easyui-linkbutton" icon="icon-print">Print</a>
</div>
<h3>DEMO2</h3>
<div style="padding:5px;background:#efefef;width:500px;">
<a href="#" class="easyui-linkbutton" plain="true" icon="icon-cancel">Cancel</a>
<a href="#" class="easyui-linkbutton" plain="true" icon="icon-reload">Refresh</a>
<a href="#" class="easyui-linkbutton" plain="true" icon="icon-search">Query</a>
<a href="#" class="easyui-linkbutton" plain="true">text button</a>
<a href="#" class="easyui-linkbutton" plain="true" icon="icon-print">Print</a>
<a href="#" class="easyui-linkbutton" plain="true" icon="icon-help"> </a>
<a href="#" class="easyui-linkbutton" plain="true" icon="icon-save"></a>
<a href="#" class="easyui-linkbutton" plain="true" icon="icon-back"></a>
</div>
icon屬性是icon CSS類是在按鈕上顯示的圖示。執行程式碼,出現:
一些時候,你可以決定禁用或者不禁用連線按鈕,使用下面的程式碼可以禁用連線圖示:
$(selector).linkbutton({disabled:true});
o 4.3建立選單按鈕
選單按鈕包含按鈕和選單兩部分,當點選或者移動滑鼠到按鈕上的時候,顯示相應的選單。定義選單按鈕,需要定義連結按鈕和選單,像這樣:
<div style="background:#C9EDCC;padding:5px;width:200px;">
<a href="javascript:void(0)" id="mb1" icon="icon-edit">Edit</a>
<a href="javascript:void(0)" id="mb2" icon="icon-help">Help</a>
</div>
<div id="mm1" style="width:150px;">
<div icon="icon-undo">Undo</div>
<div icon="icon-redo">Redo</div>
<div class="menu-sep"></div>
<div>Cut</div>
<div>Copy</div>
<div>Paste</div>
<div class="menu-sep"></div>
<div icon="icon-remove">Delete</div>
<div>Select All</div>
</div>
<div id="mm2" style="width:100px;">
<div>Help</div>
<div>Update</div>
<div>About</div>
</div>
使用下列jQuery程式碼:
$('#mb1').menubutton({menu:'#mm1'});
$('#mb2').menubutton({menu:'#mm2'});
現在,選單按鈕就完成了。
o 4.4建立拆分按鈕
拆分按鈕包括連結按鈕和選單。當使用者點選或者懸停在下箭頭區域時顯示相關選單。這個例子是建立拆分按鈕的演示:
首先,建立一個連結按鈕和選單標記:
<div style="border:1px solid #ccc;background:#ddd;padding:5px;width:120px;">
<a href="javascript:void(0)" id="sb" icon="icon-edit">Edit</a>
<a href="javascript:void(0)" class="easyui-linkbutton" plain="true" icon="icon-help"></a>
</div>
<div id="mm" style="width:150px;">
<div icon="icon-undo">Undo</div>
<div icon="icon-redo">Redo</div>
<div class="menu-sep"></div>
<div>Cut</div>
<div>Copy</div>
<div>Paste</div>
<div class="menu-sep"></div>
<div>
<span>Open</span>
<div style="width:150px;">
<div>Firefox</div>
<div>Internet Explorer</div>
<div class="menu-sep"></div>
<div>Select Program...</div>
</div>
</div>
<div icon="icon-remove">Delete</div>
<div>Select All</div>
</div>
jQuery 程式碼:
$('#sb').splitbutton({menu:'#mm'});
執行後會出現:
- 版面
- 建立邊框版面
- 皮膚上的複合版面
- 建立可摺疊版面
- 建立TABS
- 動態新增TABS
- 建立XP樣式左皮膚
· 5建立邊框版面網頁
邊框版面提供5個區域:東西南北中(其實就是上下左右中),下面是通常用法:
- 5.1北區可以用於網站banner
- 5.2南區可以用於版權資訊和註釋
- 5.3西區可以用於導航選單
- 5.4東區可以用於推廣專案
- 5.5中區可以用於主內容
運用版面,需要確認版面容器然後定義一些區域。版面至少要有一箇中間區域。下列是版面例子:
<div class="easyui-layout" style="width:400px;height:300px;">
<div region="west" split="true" title="Navigator" style="width:150px;">
<p style="padding:5px;margin:0;">Select language:</p>
<ul>
<li><a href="javascript:void(0)" onclick="showpage('java.html')">Java</a></li>
<li><a href="javascript:void(0)" onclick="showpage('cshape.html')">C#</a></li>
<li><a href="javascript:void(0)" onclick="showpage('vb.html')">VB</a></li>
<li><a href="javascript:void(0)" onclick="showpage('erlang.html')">Erlang</a></li>
</ul>
</div>
<div id="content" region="center" title="Language" href="java.html" style="padding:5px;">
</div>
</div>
我們使用DIV容器建立邊框版面。版面拆分容器為2部分,左面是導航選單右面是主內容。中間區域的皮膚,我們設定href屬性以呼叫出示網頁。
執行layout.html的結果是:
寫下onclick事件控制函式以獲取資料,showpage函式非常簡單:
function showpage(url){
$('#content').load(url);
}
o 5.1皮膚上的複合版面
皮膚允許你建立為多使用者定製版面。這個例子我們建立MSN資訊框,通過皮膚版面外掛:
我們使用多種版面在皮膚區域中。最上面的資訊框我們放置搜尋input,也可以放置頭像在右面。中間區域我們差分成兩部分通過split屬性為TRUE,允許使用者改變皮膚上區域的大小:
程式碼:
<div class="easyui-panel" title="Complex Panel Layout" icon="icon-search" collapsible="true" style="padding:5px;width:500px;height:250px;">
<div class="easyui-layout" fit="true">
<div region="north" border="false" class="p-search">
<label>Search:</label><input></input>
</div>
<div region="center" border="false">
<div class="easyui-layout" fit="true">
<div region="east" border="false" class="p-right">
<img src="msn.gif"/>
</div>
<div region="center" border="false" style="border:1px solid #ccc;">
<div class="easyui-layout" fit="true">
<div region="south" split="true" border="false" style="height:60px;">
<textarea style="overflow:auto;border:0;width:100%;height:100%;">Hi,I am easyui.</textarea>
</div>
<div region="center" border="false">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
我們不需要編寫任何js程式碼,但是擁有強大的使用者介面設計的能力。
o 5.2建立可摺疊版面
這個教程中,我們學習關於easyui可摺疊性。可摺疊包括一系列皮膚。所有皮膚頭是全部可見的,但是在一個時期內只有一個皮膚的body內容是可見的。當使用者點選皮膚頭,body內容變為可見其他皮膚body內容變得不可見。
<div class="easyui-accordion" style="width:300px;height:200px;">
<div title="About Accordion" icon="icon-ok" style="overflow:auto;padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
<div title="About easyui" icon="icon-reload" selected="true" style="padding:10px;">
easyui help you build your web page easily
</div>
<div title="Tree Menu">
<ul id="tt1" class="easyui-tree">
<li>
<span>Folder1</span>
<ul>
<li>
<span>Sub Folder 1</span>
<ul>
<li>
<span>File 11</span>
</li>
<li>
<span>File 12</span>
</li>
<li>
<span>File 13</span>
</li>
</ul>
</li>
<li>
<span>File 2</span>
</li>
<li>
<span>File 3</span>
</li>
</ul>
</li>
<li>
<span>File2</span>
</li>
</ul>
</div>
</div>
我們建立3個皮膚,第三個皮膚內容是一個樹狀選單。
o 5.3建立TABS
這個教程顯示你如何使用easyui建立tabs元件。tabs有多個皮膚,這些皮膚能被動態的新增或者刪除。你可以使用tabs來顯示不同的實體。在一個時間內只顯示一個皮膚。每一個皮膚擁有title,icon和close按鈕。當tabs被選擇時,相關皮膚的內容被現實。
tabs從HTML標記建立,包含DIV容器和一些DIV皮膚。
<div class="easyui-tabs" style="width:400px;height:100px;">
<div title="First Tab" style="padding:10px;">
First Tab
</div>
<div title="Second Tab" closable="true" style="padding:10px;">
Second Tab
</div>
<div title="Third Tab" icon="icon-reload" closable="true" style="padding:10px;">
Third Tab
</div>
</div>
我們建立3個皮膚的tabs元件,第二個和第三個皮膚可以通過點選close按鈕關閉。
o 5.4動態新增tabs
你只需呼叫add方法,就可以使用jquery easyui很容易動態新增tabs。在這個教程中,我們動態的新增顯示一個頁面使用iframe。當點選新增add按鈕,新tab被新增。如果tab已經存在,被啟用。
第一步:建立tabs
<div style="margin-bottom:10px">
<a href="#" class="easyui-linkbutton" onclick="addTab('google','http://www.google.com')">google</a>
<a href="#" class="easyui-linkbutton" onclick="addTab('jquery','http://jquery.com/')">jquery</a>
<a href="#" class="easyui-linkbutton" onclick="addTab('easyui','http://jquery-easyui.wikidot.com')">easyui</a>
</div>
<div id="tt" class="easyui-tabs" style="width:400px;height:250px;">
<div title="Home">
</div>
</div>
HTML程式碼很簡單,我們建立tabs用一個tab皮膚,名字為home。記住,我們不需要寫任何js程式碼。
第二步:使addTab函式生效
function addTab(title, url){
if ($('#tt').tabs('exists', title)){
$('#tt').tabs('select', title);
} else {
var content = '<iframe scrolling="auto" frameborder="0" src="'+url+'" style="width:100%;height:100%;"></iframe>';
$('#tt').tabs('add',{
title:title,
content:content,
closable:true
});
}
}
我們使用exists方法判斷tab是否存在。如果存在,則啟用tab。呼叫add方法新增新tab皮膚。
o 5.5建立XP式樣左皮膚
通常,瀏覽資料夾在windowsXP中有左皮膚,包括常用任務內容。這個教程顯示你如何使用easyui皮膚外掛建立XP左皮膚。
定義幾個皮膚
我們幾個皮膚顯示一些任務,每個皮膚僅可以摺疊和展開工具按鈕。程式碼像這樣:
<div style="width:200px;height:auto;background:#7190E0;padding:5px;">
<div class="easyui-panel" title="Picture Tasks" collapsible="true" style="width:200px;height:auto;padding:10px;">
View as a slide show<br/>
Order prints online<br/>
Print pictures
</div>
<br/>
<div class="easyui-panel" title="File and Folder Tasks" collapsible="true" style="width:200px;height:auto;padding:10px;">
Make a new folder<br/>
Publish this folder to the Web<br/>
Share this folder
</div>
<br/>
<div class="easyui-panel" title="Other Places" collapsible="true" collapsed="true" style="width:200px;height:auto;padding:10px;">
New York<br/>
My Pictures<br/>
My Computer<br/>
My Network Places
</div>
<br/>
<div class="easyui-panel" title="Details" collapsible="true" style="width:200px;height:auto;padding:10px;">
My documents<br/>
File folder<br/><br/>
Date modified: Oct.3rd 2010
</div>
</div>
檢視效果是不是我們想要的,我們必須改變皮膚header背景圖片和收縮按鈕icon。
定製皮膚外觀效果
做到這一點並不難,我們需要做的是重新定義一些CSS。
.panel-header{
background:#fff url('panel_header_bg.gif') no-repeat top right;
}
.panel-body{
background:#f0f0f0;
}
.panel-tool-collapse{
background:url('arrow_up.gif') no-repeat 0px -3px;
}
.panel-tool-expand{
background:url('arrow_down.gif') no-repeat 0px -3px;
}
當使用easyui定義使用者介面時是很簡單的。
· 6 DataGrid 資料格
- 6.1轉換HTML表格到DataGrid
- 6.2給DataGrid新增分頁
- 6.3從DataGrid中獲得選定行的資料
- 6.4新增工具欄到DataGrid
- 6.5DataGrid凍結列
- 6.6動態改變DataGrid列
- 6.7格式化DataGrid列
- 6.8新增DataGrid的分類
- 6.9在DataGrid中建立列組
- 6.10在DataGrid中選擇核取方塊
- 6.11定製DataGrid頁面
- 6.12使DataGrid能行嫩編輯
- 6.13合併DataGrid單元格
o 6.1 轉換HTML表格到DataGrid
這個例子顯示如何轉換表格到DataGrid。DataGrid在thead標記中定義列,在tbody標記中定義資料。確定給每一個資料列設定欄位名,看這個例子:
<table id="tt" class="easyui-datagrid" style="width:400px;height:auto;">
<thead>
<tr>
<th field="name1" width="50">Col 1</th>
<th field="name2" width="50">Col 2</th>
<th field="name3" width="50">Col 3</th>
<th field="name4" width="50">Col 4</th>
<th field="name5" width="50">Col 5</th>
<th field="name6" width="50">Col 6</th>
</tr>
</thead>
<tbody>
<tr>
<td>Data 1</td>
<td>Data 2</td>
<td>Data 3</td>
<td>Data 4</td>
<td>Data 5</td>
<td>Data 6</td>
</tr>
<tr>
<td>Data 1</td>
<td>Data 2</td>
<td>Data 3</td>
<td>Data 4</td>
<td>Data 5</td>
<td>Data 6</td>
</tr>
<tr>
<td>Data 1</td>
<td>Data 2</td>
<td>Data 3</td>
<td>Data 4</td>
<td>Data 5</td>
<td>Data 6</td>
</tr>
<tr>
<td>Data 1</td>
<td>Data 2</td>
<td>Data 3</td>
<td>Data 4</td>
<td>Data 5</td>
<td>Data 6</td>
</tr>
</tbody>
</table>
不需要js程式碼就能看到這個效果:
當然,你也可以定義複合表頭,像這樣:
<thead>
<tr>
<th field="name1" width="50" rowspan="2">Col 1</th>
<th field="name2" width="50" rowspan="2">Col 2</th>
<th field="name3" width="50" rowspan="2">Col 3</th>
<th colspan="3">Details</th>
</tr>
<tr>
<th field="name4" width="50">Col 4</th>
<th field="name5" width="50">Col 5</th>
<th field="name6" width="50">Col 6</th>
</tr>
</thead>
o 6.2 給DataGrid新增分頁
這個例子顯示如何能從伺服器中呼叫資料,如何新增分頁到DataGrid中。
從遠端伺服器中呼叫資料,你必須設定url屬性,伺服器應該返回JSON格式資料。獲得更多資料格式,請參考DataGrid文件。
建立<table>標記
首先,我們在網頁上定義標記。
<table id="tt"></table>
jQuery程式碼
然後,寫一些jQuery程式碼建立DataGrid元件
$('#tt').datagrid({
title:'Load Data',
iconCls:'icon-save',
width:600,
height:250,
url:'/demo3/data/getItems',
columns:[[
{field:'itemid',title:'Item ID',width:80},
{field:'productid',title:'Product ID',width:80},
{field:'listprice',title:'List Price',width:80,align:'right'},
{field:'unitcost',title:'Unit Cost',width:80,align:'right'},
{field:'attr1',title:'Attribute',width:100},
{field:'status',title:'Status',width:60}
]],
pagination:true
});
我們定義DataGrid列並且設定pagination屬性為true,這樣可以在DataGrid上產生分頁欄按鈕。分頁傳送2個引數到伺服器。
- page: 頁號,從1開始。
- rows: 每頁的列數。
我們使用etmvc framework編寫後臺服務程式碼,所以,url被對映到DataController類和getItems方法。
定義資料模型的例子
@Table(name="item")
public class Item extends ActiveRecordBase{
@Id public String itemid;
@Column public String productid;
@Column public java.math.BigDecimal listprice;
@Column public java.math.BigDecimal unitcost;
@Column public String attr1;
@Column public String status;
}
編寫控制程式碼
public class DataController extends ApplicationController{
/**
* get item data
* @param page page index
* @param rows rows per page
* @return JSON format string
* @throws Exception
*/
public View getItems(int page, int rows) throws Exception{
long total = Item.count(Item.class, null, null);
List<Item> items = Item.findAll(Item.class, null, null, null, rows, (page-1)*rows);
Map<String, Object> result = new HashMap<String, Object>();
result.put("total", total);
result.put("rows", items);
return new JsonView(result);
}
}
資料庫配置例項
domain_base_class=com.et.ar.ActiveRecordBase
com.et.ar.ActiveRecordBase.adapter_class=com.et.ar.adapters.MySqlAdapter
com.et.ar.ActiveRecordBase.driver_class=com.mysql.jdbc.Driver
com.et.ar.ActiveRecordBase.url=jdbc:mysql://localhost/jpetstore
com.et.ar.ActiveRecordBase.username=root
com.et.ar.ActiveRecordBase.password=soft123456
com.et.ar.ActiveRecordBase.pool_size=0
部署
- 建立MySQL資料庫
- 從'/db/item.sql'匯入測試表資料,表名是'item'.
- 按需要改變資料庫配置,配置檔案在/WEB-INF/classes/activerecord.properties中。
- 執行程式
o 6.3 得到DataGrid選擇行
這個例子顯示瞭如何得到選擇行的資料。
DataGrid元件包括2個方法檢索選擇行資料:
- getSelected: 得到第一個選擇行的資料,如果沒有選擇行則返回null否則返回該記錄
- getSelections:得到全部的選擇行的資料,如果元素是記錄的話,返回陣列資料
建立標記
<table id="tt"></table>
建立 datagrid
$('#tt').datagrid({
title:'Load Data',
iconCls:'icon-save',
width:600,
height:250,
url:'datagrid_data.json',
columns:[[
{field:'itemid',title:'Item ID',width:80},
{field:'productid',title:'Product ID',width:80},
{field:'listprice',title:'List Price',width:80,align:'right'},
{field:'unitcost',title:'Unit Cost',width:80,align:'right'},
{field:'attr1',title:'Attribute',width:100},
{field:'status',title:'Status',width:60}
]]
});
用法演示
得到選擇行資料:
var row = $('#tt').datagrid('getSelected');
if (row){
alert('Item ID:'+row.itemid+"\nPrice:"+row.listprice);
}
得到全部選擇行的itemid:
var ids = [];
var rows = $('#tt').datagrid('getSelections');
for(var i=0; i<rows.length; i++){
ids.push(rows[i].itemid);
}
alert(ids.join('\n'));
o 6.4 新增工具欄到DataGrid
這個例子顯示瞭如何新增工具欄:
DataGrid外掛有工具欄屬性,這個屬性可以定義工具欄。工具欄包括定義了下列屬性的按鈕:
- text: 在按鈕上顯示的文字
- iconCls: 定義背景圖示顯示在按鈕的左面的CSS類。
- handler: 當使用者按下按鈕時,處理一些事情的函式
標記
<table id="tt"></table>
jQuery
$('#tt').datagrid({
title:'DataGrid with Toolbar',
width:550,
height:250,
url:'datagrid_data.json',
columns:[[
{field:'itemid',title:'Item ID',width:80},
{field:'productid',title:'Product ID',width:80},
{field:'listprice',title:'List Price',width:80,align:'right'},
{field:'unitcost',title:'Unit Cost',width:80,align:'right'},
{field:'attr1',title:'Attribute',width:100},
{field:'status',title:'Status',width:60}
]],
toolbar:[{
text:'Add',
iconCls:'icon-add',
handler:function(){
alert('add')
}
},{
text:'Cut',
iconCls:'icon-cut',
handler:function(){
alert('cut')
}
},'-',{
text:'Save',
iconCls:'icon-save',
handler:function(){
alert('save')
}
}]
});
o 6.5 DataGrid凍結列
這個例子演示瞭如何凍結列。當使用者水平滾動的時候,凍結列不能滾動出檢視。
凍結列,你應該定義frozenColumns屬性,這個屬性和columns屬性相似。
<table id="tt"></table>
$('#tt').datagrid({
title:'Frozen Columns',
iconCls:'icon-save',
width:500,
height:250,
url:'datagrid_data.json',
frozenColumns:[[
{field:'itemid',title:'Item ID',width:80},
{field:'productid',title:'Product ID',width:80},
]],
columns:[[
{field:'listprice',title:'List Price',width:80,align:'right'},
{field:'unitcost',title:'Unit Cost',width:80,align:'right'},
{field:'attr1',title:'Attribute',width:100},
{field:'status',title:'Status',width:60}
]]
});
o 6.6 動態改變DataGrid列
DataGrid列可以使用columns屬性定義。如果你想動態改變列,也沒問題。改變列你可以重新呼叫DataGrid方法平且傳遞新columns屬性。
下面定義DataGrid元件
<table id="tt"></table>
$('#tt').datagrid({
title:'Change Columns',
iconCls:'icon-save',
width:550,
height:250,
url:'datagrid_data.json',
columns:[[
{field:'itemid',title:'Item ID',width:80},
{field:'productid',title:'Product ID',width:80},
{field:'attr1',title:'Attribute',width:200},
{field:'status',title:'Status',width:80}
]]
});
執行網頁,我們看到:
通常,我們想改變列,你可以寫這些程式碼:
$('#tt').datagrid({
columns:[[
{field:'itemid',title:'Item ID',width:80},
{field:'productid',title:'Product ID',width:80},
{field:'listprice',title:'List Price',width:80,align:'right'},
{field:'unitcost',title:'Unit Cost',width:80,align:'right'},
{field:'attr1',title:'Attribute',width:100},
{field:'status',title:'Status',width:60}
]]
});
記住,我們已經定義其他屬性,比如:url,width,height等,我們不需要重複定義他們,我們定義我們想改變的。
o 6.7 格式化DataGrid列
下面的例子是在easyui DataGrid中格式化列,如果單價低於20,則使用定義列formatter為紅色文字。
格式化DataGrid列,我們應該設定formatter屬性,這個屬性是一個函式。格式化函式包括兩個引數:
- value: 顯示欄位當前列的值
- record: 當前行記錄資料
Markup
<table id="tt"></table>
jQuery
$('#tt').datagrid({
title:'Formatting Columns',
width:550,
height:250,
url:'datagrid_data.json',
columns:[[
{field:'itemid',title:'Item ID',width:80},
{field:'productid',title:'Product ID',width:80},
{field:'listprice',title:'List Price',width:80,align:'right',
formatter:function(val,rec){
if (val < 20){
return '<span style="color:red;">('+val+')</span>';
} else {
return val;
}
}
},
{field:'unitcost',title:'Unit Cost',width:80,align:'right'},
{field:'attr1',title:'Attribute',width:100},
{field:'status',title:'Status',width:60}
]]
});
o 6.8 新增排序到DataGrid
這個事例演示瞭如何在點選列頭的時候排序
DataGrid中全部的列可以通過點選列頭被排序。你可以定義可以被排序的列。預設的,列不能被排序除非你設定sortable屬性為TRUE,下面是例子:
標記
<table id="tt"></table>
jQuery
$('#tt').datagrid({
title:'Sortable Column',
width:550,
height:250,
url:'/demo4/data/getItems',
columns:[[
{field:'itemid',title:'Item ID',width:80,sortable:true},
{field:'productid',title:'Product ID',width:80,sortable:true},
{field:'listprice',title:'List Price',width:80,align:'right',sortable:true},
{field:'unitcost',title:'Unit Cost',width:80,align:'right',sortable:true},
{field:'attr1',title:'Attribute',width:100},
{field:'status',title:'Status',width:60}
]],
pagination:true,
sortName:'itemid',
sortOrder:'asc'
});
我們定義一些可排序的列,包括itemid,productid,listprice,unitcost等。attr1列和status列不能被排序。我們設定預設排序列:itemid,按asc(升序)排序。
當排序時, DataGrid傳送兩個引數到伺服器:
- sort: 排序列欄位名
- order: 排序次序: 'asc' 或 'desc', 預設為'asc'.
我們使用etmvc framework 寫後臺伺服器程式碼,首先定義資料模型
@Table(name="item")
public class Item extends ActiveRecordBase{
@Id public String itemid;
@Column public String productid;
@Column public java.math.BigDecimal listprice;
@Column public java.math.BigDecimal unitcost;
@Column public String attr1;
@Column public String status;
}
寫控制程式碼:
public class DataController extends ApplicationController{
/**
* get item data
* @param page page number
* @param rows page size
* @param sort sort column field name
* @param order sort order, can be 'asc' or 'desc'
* @return JSON format string
* @throws Exception
*/
public View getItems(int page, int rows, String sort, String order) throws Exception{
long total = Item.count(Item.class, null, null);
List<Item> items = Item.findAll(Item.class, null, null, sort+" "+order, rows, (page-1)*rows);
Map<String, Object> result = new HashMap<String, Object>();
result.put("total", total);
result.put("rows", items);
return new JsonView(result);
}
}
我們使用MySQL資料庫儲存演示資料,下面是配置例項:
domain_base_class=com.et.ar.ActiveRecordBase
com.et.ar.ActiveRecordBase.adapter_class=com.et.ar.adapters.MySqlAdapter
com.et.ar.ActiveRecordBase.driver_class=com.mysql.jdbc.Driver
com.et.ar.ActiveRecordBase.url=jdbc:mysql://localhost/jpetstore
com.et.ar.ActiveRecordBase.username=root
com.et.ar.ActiveRecordBase.password=soft123456
com.et.ar.ActiveRecordBase.pool_size=0
部署
- 建立MySQL資料庫
- 從'/db/item.sql'匯入測試表資料,表名是'item'.
- 按需要改變資料庫配置,配置檔案在/WEB-INF/classes/activerecord.properties中。
- 執行程式
o 6.9 在DataGrid上的核取方塊
本教程顯示了你如何放置checkbox列。使用checkbox,使用者可以選定/取消資料行。
新增checkbox列,我們簡單的新增列的checkbox屬性,並且設定為true。程式碼像這樣:
<table id="tt"></table>
$('#tt').datagrid({
title:'Checkbox Select',
iconCls:'icon-ok',
width:600,
height:250,
url:'datagrid_data.json',
idField:'itemid',
columns:[[
{field:'ck',checkbox:true},
{field:'itemid',title:'Item ID',width:80},
{field:'productid',title:'Product ID',width:80},
{field:'listprice',title:'List Price',width:80,align:'right'},
{field:'unitcost',title:'Unit Cost',width:80,align:'right'},
{field:'attr1',title:'Attribute',width:100},
{field:'status',title:'Status',width:60}
]],
pagination:true
});
上面的程式碼,我們可以新增列的checkbox屬性,然後他就會出現選擇列。如果idField屬性被設定,DataGrid的選擇會被不同的頁保持。
o 6.10 自定義DataGrid分頁
DataGrid內建分頁能力是強大的,它比自定義相對容易。在這個教程,我們將要建立DataGrid並且在頁面工具欄中新增一些自定義按鈕。
標記
<table id="tt"></table>
建立DataGrid
$('#tt').datagrid({
title:'Load Data',
iconCls:'icon-save',
width:550,
height:250,
pagination:true,
url:'datagrid_data.json',
columns:[[
{field:'itemid',title:'Item ID',width:80},
{field:'productid',title:'Product ID',width:80},
{field:'listprice',title:'List Price',width:80,align:'right'},
{field:'unitcost',title:'Unit Cost',width:80,align:'right'},
{field:'attr1',title:'Attribute',width:100},
{field:'status',title:'Status',width:60}
]]
});
記住設定pagination屬性為true產生頁面工具欄。
自定義頁面工具欄
var pager = $('#tt').datagrid('getPager'); //得到DataGrid頁面
pager.pagination({
showPageList:false,
buttons:[{
iconCls:'icon-search',
handler:function(){
alert('search');
}
},{
iconCls:'icon-add',
handler:function(){
alert('add');
}
},{
iconCls:'icon-edit',
handler:function(){
alert('edit');
}
}],
onBeforeRefresh:function(){
alert('before refresh');
return true;
}
});
我們得到DataGrid頁,然後重新構建頁面。我們隱藏頁列表然後新增新按鈕。
o 6.11使DataGrid能編輯
可編輯特徵是最近新增的。它能讓使用者新增新行。使用者也可以更新一行或多行。這個教程顯示瞭如何建立使用行內編輯的DataGrid。
建立DataGrid
<table id="tt"></table>
$('#tt').datagrid({
title:'Editable DataGrid',
iconCls:'icon-edit',
width:660,
height:250,
singleSelect:true,
idField:'itemid',
url:'datagrid_data.json',
columns:[[
{field:'itemid',title:'Item ID',width:60},
{field:'productid',title:'Product',width:100,
formatter:function(value){
for(var i=0; i<products.length; i++){
if (products[i].productid == value) return products[i].name;
}
return value;
},
editor:{
type:'combobox',
options:{
valueField:'productid',
textField:'name',
data:products,
required:true
}
}
},
{field:'listprice',title:'List Price',width:80,align:'right',editor:{type:'numberbox',options:{precision:1}}},
{field:'unitcost',title:'Unit Cost',width:80,align:'right',editor:'numberbox'},
{field:'attr1',title:'Attribute',width:150,editor:'text'},
{field:'status',title:'Status',width:50,align:'center',
editor:{
type:'checkbox',
options:{
on: 'P',
off: ''
}
}
},
{field:'action',title:'Action',width:70,align:'center',
formatter:function(value,row,index){
if (row.editing){
var s = '<a href="#" onclick="saverow('+index+')">Save</a> ';
var c = '<a href="#" onclick="cancelrow('+index+')">Cancel</a>';
return s+c;
} else {
var e = '<a href="#" onclick="editrow('+index+')">Edit</a> ';
var d = '<a href="#" onclick="deleterow('+index+')">Delete</a>';
return e+d;
}
}
}
]],
onBeforeEdit:function(index,row){
row.editing = true;
$('#tt').datagrid('refreshRow', index);
},
onAfterEdit:function(index,row){
row.editing = false;
$('#tt').datagrid('refreshRow', index);
},
onCancelEdit:function(index,row){
row.editing = false;
$('#tt').datagrid('refreshRow', index);
}
});
使DataGrid可編輯,你應該新增editor屬性到列中。editor告訴DataGrid如何編輯字和如何儲存值。我們定義了三個editor:text,combobox,checkbox。
新增編輯功能
function editrow(index){
$('#tt').datagrid('beginEdit', index);
}
function deleterow(index){
$.messager.confirm('Confirm','Are you sure?',function(r){
if (r){
$('#tt').datagrid('deleteRow', index);
}
});
}
function saverow(index){
$('#tt').datagrid('endEdit', index);
}
function cancelrow(index){
$('#tt').datagrid('cancelEdit', index);
}
o 6.12 DataGrid中合併單元格
合併一些單元格經常是必要的,這個教程顯示了你如何合併單元格:
合併單元格,簡單的呼叫mergeCells方法並傳遞資訊引數就能告訴DataGrid如何合併單元格了。當單元格合併時,每種東西在合併單元格中,除了第一個單元格,都會被隱藏。
建立DataGrid
<table id="tt"></table>
$('#tt').datagrid({
title:'Merge Cells',
iconCls:'icon-ok',
width:600,
height:300,
singleSelect:true,
rownumbers:true,
idField:'itemid',
url:'datagrid_data.json',
pagination:true,
frozenColumns:[[
{field:'productid',title:'Product',width:100,
formatter:function(value){
for(var i=0; i<products.length; i++){
if (products[i].productid == value) return products[i].name;
}
return value;
}
},
{field:'itemid',title:'Item ID',width:80}
]],
columns:[[
{title:'Price',colspan:2},
{field:'attr1',title:'Attribute',width:150,rowspan:2},
{field:'status',title:'Status',width:60,align:'center',rowspan:2}
],[
{field:'listprice',title:'List Price',width:80,align:'right'},
{field:'unitcost',title:'Unit Cost',width:80,align:'right'}
]]
});
合併單元格
當資料被載入,我們在DataGrid中合併一些單元格,所以放置下列程式碼在onLoadSuccess函式中。
var merges = [{
index:2,
rowspan:2
},{
index:5,
rowspan:2
},{
index:7,
rowspan:2
}];
for(var i=0; i<merges.length; i++)
$('#tt').datagrid('mergeCells',{
index:merges[i].index,
field:'productid',
rowspan:merges[i].rowspan
});
· 7 視窗
- 我第一個視窗
- 自定義視窗工具
- 視窗和版面
- 建立對話方塊
o 7.1 我第一個視窗
建立視窗時很簡單的,我們建立DIV標記:
<div id="win" class="easyui-window" title="My Window" style="width:300px;height:100px;padding:5px;">
Some Content.
</div>
然後測試就出出現一個視窗,我們不用寫任何js程式碼
如果你想建立看不見的視窗,記住設定closed屬性為true,你能呼叫open方法開啟視窗:
<div id="win" class="easyui-window" title="My Window" closed="true" style="width:300px;height:100px;padding:5px;">
Some Content.
</div>
$('#win').window('open');
這個演示,我們建立一個登陸視窗
<div id="win" class="easyui-window" title="Login" style="width:300px;height:180px;">
<form style="padding:10px 20px 10px 40px;">
<p>Name: <input type="text"></p>
<p>Pass: <input type="password"></p>
<div style="padding:5px;text-align:center;">
<a href="#" class="easyui-linkbutton" icon="icon-ok">Ok</a>
<a href="#" class="easyui-linkbutton" icon="icon-cancel">Cancel</a>
</div>
</form>
</div>
o 7.2 自定義視窗工具
預設的視窗有4個工具:collapsible(可摺疊),minimizable(最小化),maximizable(最大化) 和closable(關閉),例如,我們定義下列視窗:
<div id="win" class="easyui-window" title="My Window" style="padding:10px;width:200px;height:100px;">
window content
</div>
自定義工具,設定工具為true或者false。例如,我們希望視窗只有一個closeable工具,可以設定任何其他工具為false。我們可以定義工具屬性在標記中或者jquery程式碼中。現在我們使用jquery程式碼來定義視窗:
$('#win').window({
collapsible:false,
minimizable:false,
maximizable:false
});
如果你想新增自定義工具到視窗,我們可以使用tools屬性,下面演示了我們新增自己的兩個工具:
$('#win').window({
collapsible:false,
minimizable:false,
maximizable:false,
tools:[{
iconCls:'icon-add',
handler:function(){
alert('add');
}
},{
iconCls:'icon-remove',
handler:function(){
alert('remove');
}
}]
});
o 7.3 Window和Layout
版式元件可以巢狀在視窗。我們可以建立複合版面視窗和事件而不用寫任何JS程式碼.jquery-easyui框架在後臺幫助我們進行渲染和改變工作。這個例子我們建立視窗,這個視窗有左右兩部分。在左視窗,我們建立tree,在右視窗,我們建立tabs內容。
<div class="easyui-window" title="Layout Window" icon="icon-help" style="width:500px;height:250px;padding:5px;background: #fafafa;">
<div class="easyui-layout" fit="true">
<div region="west" split="true" style="width:120px;">
<ul class="easyui-tree">
<li>
<span>Library</span>
<ul>
<li><span>easyui</span></li>
<li><span>Music</span></li>
<li><span>Picture</span></li>
<li><span>Database</span></li>
</ul>
</li>
</ul>
</div>
<div region="center" border="false" border="false">
<div class="easyui-tabs" fit="true">
<div title="Home" style="padding:10px;">
jQuery easyui framework help you build your web page easily.
</div>
<div title="Contacts">
No contact data.
</div>
</div>
</div>
<div region="south" border="false" style="text-align:right;height:30px;line-height:30px;">
<a class="easyui-linkbutton" icon="icon-ok" href="javascript:void(0)">Ok</a>
<a class="easyui-linkbutton" icon="icon-cancel" href="javascript:void(0)">Cancel</a>
</div>
</div>
</div>
看上面的程式碼,我們只需使用HTML標記,然後複合版面和window就會顯示。這個jquery-easyui框架,是容易和強大的。
o 7.4 建立對話方塊
對話方塊是特殊的視窗,它能包括上面的工具欄和下面的按鈕。預設對話方塊不能改變大小,但是使用者可以設定resizeable屬性為true來使它可以被改變大小:
對話方塊非常簡單,可以使用DIV標記建立:
<div id="dd" style="padding:5px;width:400px;height:200px;">
Dialog Content.
</div>
$('#dd').dialog({
title:'My Dialog',
iconCls:'icon-ok',
toolbar:[{
text:'Add',
iconCls:'icon-add',
handler:function(){
alert('add')
}
},'-',{
text:'Save',
iconCls:'icon-save',
handler:function(){
alert('save')
}
}],
buttons:[{
text:'Ok',
iconCls:'icon-ok',
handler:function(){
alert('ok');
}
},{
text:'Cancel',
handler:function(){
$('#dd').dialog('close');
}
}]
});
上面的程式碼創一個有工具欄和按鈕的對話方塊。這是對話方塊、工具欄、內容和按鈕的標準設定。
· 8 Tree
- 從標記建立tree
- 建立非同步tree
- 新增tree節點
- 建立checkbox節點的tree
· 8.1從標記建立tree
tree可以被從標記建立。easyui tree應該定義在ul元素中。無序列表ul元素提供了基本tree結構。每一個li元素被產生一個tree節點,子ul元素產生父tree節點。
例子:
<ul id="tt">
<li>
<span>Folder</span>
<ul>
<li>
<span>Sub Folder 1</span>
<ul>
<li><span>File 11</span></li>
<li><span>File 12</span></li>
<li><span>File 13</span></li>
</ul>
</li>
<li><span>File 2</span></li>
<li><span>File 3</span></li>
</ul>
</li>
<li><span>File21</span></li>
</ul>
建立tree:
$('#tt').tree();
顯示:
· 8.2建立非同步Tree
建立非同步tree,每一個tree節點必須有id屬性,這個屬性被傳遞到檢索子節點資料。我們這裡例子使用etmvc framework返回json資料。
建立HTML標記
<ul id="tt"></ul>
建立jQuery程式碼
我們使用url屬性來指向遠端資料
$('#tt').tree({
url:'/demo2/node/getNodes' // The url will be mapped to NodeController class and getNodes method
});
資料模型
@Table(name="nodes")
public class Node extends ActiveRecordBase{
@Id public Integer id;
@Column public Integer parentId;
@Column public String name;
public boolean hasChildren() throws Exception{
long count = count(Node.class, "parentId=?", new Object[]{id});
return count > 0;
}
}
寫控制程式碼
如果node是子,記住設定node狀態為closed。
public class NodeController extends ApplicationController{
/**
* get nodes, if the 'id' parameter equals 0 then load the first level nodes,
* otherwise load the children nodes
* @param id the parent node id value
* @return the tree required node json format
* @throws Exception
*/
public View getNodes(int id) throws Exception{
List<Node> nodes = null;
if (id == 0){ // return the first level nodes
nodes = Node.findAll(Node.class, "parentId=0 or parentId is null", null);
} else { // return the children nodes
nodes = Node.findAll(Node.class, "parentId=?", new Object[]{id});
}
List<Map<String,Object>> items = new ArrayList<Map<String,Object>>();
for(Node node: nodes){
Map<String,Object> item = new HashMap<String,Object>();
item.put("id", node.id);
item.put("text", node.name);
// the node has children,
// set the state to 'closed' so the node can asynchronous load children nodes
if (node.hasChildren()){
item.put("state", "closed");
}
items.add(item);
}
return new JsonView(items);
}
}
資料配置例項
domain_base_class=com.et.ar.ActiveRecordBase
com.et.ar.ActiveRecordBase.adapter_class=com.et.ar.adapters.MySqlAdapter
com.et.ar.ActiveRecordBase.driver_class=com.mysql.jdbc.Driver
com.et.ar.ActiveRecordBase.url=jdbc:mysql://localhost/mydb
com.et.ar.ActiveRecordBase.username=root
com.et.ar.ActiveRecordBase.password=soft123456
com.et.ar.ActiveRecordBase.pool_size=0
部署
- 建立MySQL資料庫
- 從'/db/item.sql'匯入測試表資料,表名是'item'.
- 按需要改變資料庫配置,配置檔案在/WEB-INF/classes/activerecord.properties中。
- 執行程式
· 8.3 新增節點
本教程顯示瞭如何新增節點。我們建立foods tree,這個tree包括vegetable、fruit節點。然後新增一些fruits到存在的fruit節點。
建立foods tree
首先,我們建立foods tree,程式碼像這樣:
<div style="width:200px;height:auto;border:1px solid #ccc;">
<ul id="tt" class="easyui-tree" url="tree_data.json"></ul>
</div>
注意,tree元件被定義在UL標記,tree節點資料載入tree_data.json。
得到父節點
我們點選節點以選擇fruit節點,我們新增一些fruits資料。呼叫getSelected方法來得到節點handle。
var node = $('#tt').tree('getSelected');
getSelect方法的返回值是一個js物件,包括id,text,attributes和target屬性。target屬性是DOM物件,引用了被選擇的節點,使用append方法新增節點。
新增節點:
var node = $('#tt').tree('getSelected');
if (node){
var nodes = [{
"id":13,
"text":"Raspberry"
},{
"id":14,
"text":"Cantaloupe"
}];
$('#tt').tree('append', {
parent:node.target,
data:nodes
});
}
當我們新增一些fruits,可以看到:
· 8.4 建立帶有checkbox節點的tree
tree外掛允許你建立checkbox tree,如果你點選節點的checkbox,被點選的節點資訊得到下和上的繼承。例如,點選tomato節點的checkbox,你可以看到vegetables節點現在只被選擇一部分。
建立tree標記
<ul id="tt"></ul>
建立checkbox tree
using('tree', function(){
$('#tt').tree({
url:'tree_data.json',
checkbox:true
});
});
我們使用easyloader以動態的載入tree外掛。這個特徵允許我們載入網頁快一點。
· 9 表單
- Ajax方式傳送表單
- 新增複合tree到表單
- 表單檢驗
o 9.1 Ajax方式傳送表單
這個教程顯示如何傳送表單。我們建立一個例子表單:name,email和phone欄位。使用easyui表單外掛,我們可以將表單變成ajax表單。表單傳送所有的欄位到後臺處理服務,服務處理和傳送一些資料返回前臺網頁。我們收到返回的資料後顯示他。
建立form
<div style="width:230px;background:#E0ECFF;padding:10px;">
<form id="ff" action="/demo5/ProcessServlet" method="post">
<table>
<tr>
<td>Name:</td>
<td><input name="name" type="text"></input></td>
</tr>
<tr>
<td>Email:</td>
<td><input name="email" type="text"></input></td>
</tr>
<tr>
<td>Phone:</td>
<td><input name="phone" type="text"></input></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Submit"></input></td>
</tr>
</table>
</form>
</div>
轉換成Ajax表單
我們寫一些jquery程式碼使表單以ajax方式傳送。注意,當資料返回時,form外掛的success函式激發,所以我們可以處理一點事情。
$('#ff').form({
success:function(data){
$.messager.alert('Info', data, 'info');
}
});
服務處理:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String name = request.getParameter("name");
String email = request.getParameter("email");
String phone = request.getParameter("phone");
System.out.println(name+":"+email+":"+phone);
PrintWriter out = response.getWriter();
out.print("Name:"+name+"<br/>Email:"+email+"<br/>Phone:"+phone);
out.flush();
out.close();
}
當我們點選傳送按鈕時,可以看到;
o 9.2 給表單新增複合tree欄位
複合tree是一種核取方塊和下拉tree。它能像表單欄位一樣傳遞到服務端。在這個教程中,我們建立登錄檔單,這個表單有name,address,city欄位。city欄位是一個複合tree欄位,使用者可以下拉tree皮膚並選擇指定city。
第一步:建立HTML標記
<div id="dlg" style="padding:20px;">
<h2>Account Information</h2>
<form id="ff" action="/demo6/ProcessServlet" method="post">
<table>
<tr>
<td>Name:</td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td>Address:</td>
<td><input type="text" name="address" /></td>
</tr>
<tr>
<td>City:</td>
<td><select class="easyui-combotree" url="city_data.json" name="city" style="width:155px;"/></td>
</tr>
</table>
</form>
</div>
我們設定複合tree的url屬性,這個欄位可以被從伺服器端檢索tree。注意,欄位的class名應該是easyui-combotree,所以我們不需要些任何js程式碼,複合tree欄位就會自動生成。
第二步,建立對話方塊
我們在對話方塊中放置表單,這個對話方塊有傳送和取消兩個按鈕。
$('#dlg').dialog({
title:'Register',
width:310,
height:250,
buttons:[{
text:'Submit',
iconCls:'icon-ok',
handler:function(){
$('#ff').form('submit',{
success:function(data){
$.messager.alert('Info',data,'info');
}
});
}
},{
text:'Cancel',
iconCls:'icon-cancel',
handler:function(){
$('#dlg').dialog('close');
}
}]
});
第三部,寫服務程式
服務程式碼接受表單資料並返回:
public class ProcessServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String address = request.getParameter("address");
String city = request.getParameter("city");
System.out.println(name);
System.out.println(address);
System.out.println(city);
PrintWriter out = response.getWriter();
out.print("Name:"+name+",Address:"+address+",City ID:"+city);
out.flush();
out.close();
}
}
現在我們點選傳送按鈕,得到一個資訊框,顯示一些資料。
複合tree是非常簡單的。我們做設定url屬性以檢索tree資料。
o 9.3 驗證表單
本教程將要顯示你如何驗證表單。easyui框架提供了validatebox外掛以驗證表單。在這個教程中,我們將要構建聯絡表單並且應用validatebox外掛驗證表單。你可以修改它適應自己的要求。
構建表單
讓我們構建簡單的內容的表單: name, email, subject 和message 欄位:
<div style="background:#fafafa;padding:10px;width:300px;height:300px;">
<form id="ff" method="post">
<div>
<label for="name">Name:</label>
<input class="easyui-validatebox" type="text" name="name" required="true"></input>
</div>
<div>
<label for="email">Email:</label>
<input class="easyui-validatebox" type="text" name="email" required="true" validType="email"></input>
</div>
<div>
<label for="subject">Subject:</label>
<input class="easyui-validatebox" type="text" name="subject" required="true"></input>
</div>
<div>
<label for="message">Message:</label>
<textarea name="message" style="height:60px;"></textarea>
</div>
<div>
<input type="submit" value="Submit">
</div>
</form>
</div>
我們新增class名為easyui-validatebox到input標記,所以input標記應用驗證依照validType屬性。
當出現錯誤的時候阻止表單傳送
當使用者點選傳送按鈕,我們應該阻止有錯誤的表單傳送。
$('#ff').form({
url:'/demo7/ProcessServlet',
onSubmit:function(){
return $(this).form('validate');
},
success:function(data){
alert(data);
}
});
如果表單不可以,出現提示:
編寫處理程式碼
最後,我們編寫後臺處理服務程式碼,這個程式碼顯示在控制檯上的接收引數併傳送簡單資訊到前臺頁面。
public class ProcessServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String email = request.getParameter("email");
String subject = request.getParameter("subject");
String message = request.getParameter("message");
System.out.println("Name:"+name);
System.out.println("Email:"+email);
System.out.println("Subject:"+subject);
System.out.println("Message:"+message);
PrintWriter out = response.getWriter();
out.println("ok");
out.close();
}
· 10 Documentation文件
- 10.1 Base
- EasyLoader
- Draggable
- Droppable
- Resizable
- 10.2 Layout
- Panel
- Tabs
- Accordion
- Layout
- 10.3 Menu and Button
- Menu
- LinkButton
- MenuButton
- SplitButton
- 10.4 Form
- Form
- ComboBox
- ComboTree
- NumberBox
- ValidateBox
- DateBox
- Calendar
- 10.5 Windows
- Window
- Dialog
- Messager
- 10.6 DataGrid and Tree
- Pagination
- DataGrid
- Tree
o 10.1 Base
§ 10.1.1 EasyLoader
Usage
easyloader.base = '../'; // set the easyui base directory
easyloader.load('messager', function(){ // load the specified module
$.messager.alert('Title', 'load ok');
});
Options
Properties
|
Defined locales
- af
- bg
- ca
- cs
- da
- de
- en
- fr
- nl
- zh_CN
- zh_TW
Events
|
Methods
|
§ 10.1.2 Draggable
Usage
Markup
<div id="dd" style="width:100px;height:100px;border:1px solid #ccc;">
<div id="title" style="background:#ccc;">title</div>
</div>
jQuery
$('#dd').draggable(options);
Options
Override defaults with $.fn.draggable.defaults.
Properties
|
Events
|
Methods
|
§ 10.1.3 Droppable
- ·Welcome page
- ·What is a Wiki Site?
- ·How to edit pages?
- ·How to join this site?
- ·Site members
- ·Recent changes
- ·List all pages
- ·Page Tags
- ·Site Manager
Page tags
Add a new page
窗體頂端
窗體底端
Usage
Markup
<div id="dd" style="width:100px;height:100px;border:1px solid #ccc;"></div>
jQuery
$('#dd').droppable(options);
Options
Override defaults with $.fn.droppable.defaults
Properties
|
Events
|
- ·Welcome page
- ·What is a Wiki Site?
- ·How to edit pages?
- ·How to join this site?
- ·Site members
- ·Recent changes
- ·List all pages
- ·Page Tags
- ·Site Manager
Page tags
Add a new page
窗體頂端
窗體底端
§ 10.1.4 Resizable
Usage
Markup
<div id="rr" style="width:100px;height:100px;border:1px solid #ccc;"></div>
jQuery
$('#rr').resizable(options);
Options
Override defaults with $.fn.resizable.defaults.
Properties
|
Events
|
If you want to discuss contents of this page - this is the easiest way to do it.
Click here to edit contents of this page.
Click here to toggle editing of individual sections of the page (if possible). Watch headings for an "edit" link when available.
Append content without editing the whole page source.
Check out how this page has evolved in the past.
View and manage file attachments for this page.
A few useful tools to manage this Site.
See pages that link to and include this page.
Change the name (also URL address, possibly the category) of the page.
View wiki source for this page without editing.
View/set parent page (used for creating breadcrumbs and structured layout).
Notify administrators if there is objectionable content in this page.
Something does not work as expected? Find out what you can do.
General Wikidot.com documentation and help section.
Wikidot.com Terms of Service - what you can, what you should not etc.
Wikidot.com Privacy Policy.
o 10.2 layout
§ 10.2.1 Panel
Usage
Markup
Many panel properties can be defined in <div/> markup.
<div id="p" title="My Panel" collapsible="true" style="padding:10px;">
Panel Content
</div>
jQuery
To create a panel
$('#p').panel(options);
To create a panel with custom tools
$('#p').panel({
title: 'My Panel',
tools: [{
iconCls:'icon-new',
handler:function(){alert('new')}
},{
iconCls:'icon-save'
handler:function(){alert('save')}
}]
});
To move panel to other position
$('#p').panel('move',{
left:100,
top:100
});
Dependencies
none
Options
Override defaults with $.fn.panel.defaults.
Properties
|
Events
|
Methods
|
§ 10.2.2 tabs
Usage
Markup
<div id="tt" style="width:500px;height:250px;">
<div title="Tab1" style="padding:20px;display:none;">
tab1
</div>
<div title="Tab2" closable="true" style="overflow:auto;padding:20px;display:none;">
tab2
</div>
<div title="Tab3" icon="icon-reload" closable="true" style="padding:20px;display:none;">
tab3
</div>
</div>
jQuery
To create a tabs container
$('#tt').tabs(options);
To add a tab panel:
$('#tt').tabs('add',{
title:'New Tab',
content:'Tab Body',
closable:true
});
To get the selected tab panel and its tab object:
var pp = $('#tt').tabs('getSelected');
var tab = pp.panel('options').tab; // the corresponding tab object
Dependencies
- panel
Options
Tabs Container
Override defaults with $.fn.tabs.defaults.
Properties
|
Events
|
Methods
|
Tab Panel
Properties
|
§ 10.2.3 accordion
Usage
Markup
<div id="aa" style="width:300px;height:200px;">
<div title="Title1" icon="icon-save" style="overflow:auto;padding:10px;">
<h3 style="color:#0099FF;">Accordion for jQuery</h3>
<p>Accordion is a part of easyui framework for jQuery. It lets you define your accordion component on web page more easily.</p>
</div>
<div title="Title2" icon="icon-reload" selected="true" style="padding:10px;">
content2
</div>
<div title="Title3">
content3
</div>
</div>
jQuery
$('#aa').accordion(options);
Dependencies
- panel
Options
Container Options
|
Panel Options
The accordion panel options is inhirited from panel, many properties is defined in <div/> markup.
Bellow is the addition properties:
|
Events
|
Methods
|
§ 10.2.4 layout
Usage
Markup
The layout panel must has one 'center' panel.
<div id="cc" style="width:600px;height:400px;">
<div region="north" title="North Title" split="true" style="height:100px;"></div>
<div region="south" title="South Title" split="true" style="height:100px;"></div>
<div region="east" icon="icon-reload" title="East" split="true" style="width:100px;"></div>
<div region="west" split="true" title="West" style="width:100px;"></div>
<div region="center" title="center title" style="padding:5px;background:#eee;"></div>
</div>
jQuery
$('#cc').layout(options);
Dependencies
- panel
- resizable
Options
Layout Panel Options
All the properties is defined on <div/> markup, which the layout panel is created from it.
|
Methods
|
o 10.3 Menu and button
Usage
Markup
<div id="mm" style="width:120px;">
<div>New</div>
<div>
<span>Open</span>
<div style="width:150px;">
<div><b>Word</b></div>
<div>Excel</div>
<div>PowerPoint</div>
</div>
</div>
<div icon="icon-save">Save</div>
<div class="menu-sep"></div>
<div>Exit</div>
</div>
jQuery
To create a menu:
$('#mm').menu(options);
To show a menu on special position:
$('#mm').menu('show', {
left: 200,
top: 100
});
Dependencies
none
Options
Override defaults with $.fn.menu.defaults.
Properties
|
Events
|
Methods
|
linkbutton
Usage
Markup
<a href="#" id="btn" icon="icon-search">easyui</a>
jQuery
$('#btn').linkbutton(options);
Dependencies
none
Options
Override defaults with $.fn.linkbutton.defaults.
Properties
|
Methods
|
- ·Welcome page
- ·What is a Wiki Site?
- ·How to edit pages?
- ·How to join this site?
- ·Site members
- ·Recent changes
- ·List all pages
- ·Page Tags
- ·Site Manager
Page tags
Add a new page
窗體頂端
窗體底端
MenuButton
Usage
Markup
<a href="javascript:void(0)" id="mb" icon="icon-edit">Edit</a>
<div id="mm" style="width:150px;">
<div icon="icon-undo">Undo</div>
<div icon="icon-redo">Redo</div>
<div class="menu-sep"></div>
<div>Cut</div>
<div>Copy</div>
<div>Paste</div>
<div class="menu-sep"></div>
<div icon="icon-remove">Delete</div>
<div>Select All</div>
</div>
jQuery
$('#mb').menubutton({
menu: '#mm'
});
Dependencies
- menu
- linkbutton
Options
Override default with $.fn.menubutton.defaults.
|
- ·Welcome page
- ·What is a Wiki Site?
- ·How to edit pages?
- ·How to join this site?
- ·Site members
- ·Recent changes
- ·List all pages
- ·Page Tags
- ·Site Manager
Page tags
Add a new page
窗體頂端
窗體底端
SplitButton
Usage
Markup
<a href="javascript:void(0)" id="sb" icon="icon-ok" onclick="javascript:alert('ok')">Ok</a>
<div id="mm" style="width:100px;">
<div icon="icon-ok">Ok</div>
<div icon="icon-cancel">Cancel</div>
</div>
jQuery
$('#sb').splitbutton({
menu:'#mm'
});
Dependencies
- menu
- linkbutton
Options
Override default with $.fn.splitbutton.defaults.
|
o 10.4 form
Usage
Markup
<form id="ff" method="post">
...
</form>
jQuery
To make the form become ajax submit form
$('#ff').form({
url:...,
onSubmit: function(){
// do some check
// return false to prevent submit;
},
success:function(data){
alert(data)
}
});
To do a submit action
$('#ff').form('submit', {
url:...,
onSubmit: function(){
// do some check
// return false to prevent submit;
},
success:function(data){
alert(data)
}
});
Dependencies
none
Options
Properties
|
Events
|
Methods
|
combobox
Usage
Markup
<select id="cc" name="dept" style="width:200px;">
<option value="aa">aitem1</option>
<option>bitem2</option>
<option>bitem3</option>
<option>ditem4</option>
<option>eitem5</option>
</select>
jQuery
$('#cc').combobox(options);
To create from remote data:
$('#cc').combobox({
url:'combobox_data.json',
valueField:'id',
textField:'text'
});
The remote data format sample:
[{
"id":1,
"text":"text1"
},{
"id":2,
"text":"text2"
},{
"id":3,
"text":"text3",
"selected":true
},{
"id":4,
"text":"text4"
},{
"id":5,
"text":"text5"
}]
Dependencies
- validatebox
Options
Override defaults with $.fn.combobox.defaults.
Properties
|
Events
|
Methods
|
combotree
Usage
Markup
<select id="cc" style="width:200px;"></select>
jQuery
$('#cc').combotree({
url:'tree_data.json'
});
Dependencies
- tree
- validatebox
Options
Override defaults with $.fn.combotree.defaults.
Properties
|
Events
|
Methods
|
- ·Welcome page
- ·What is a Wiki Site?
- ·How to edit pages?
- ·How to join this site?
- ·Site members
- ·Recent changes
- ·List all pages
- ·Page Tags
- ·Site Manager
Page tags
Add a new page
窗體頂端
窗體底端
NumberBox
Usage
Markup
<input type="text" id="nn"></input>
jQuery
$('#nn').numberbox(options);
Dependencies
- validatebox
Options
Override defaults with $.fn.numberbox.defaults.
Properties
|
Methods
validatebox
Usage
Markup
<input id="vv" required="true" validType="email">
jQuery
$('#vv').validatebox(options)
Validate Rule
The validate rule is defined by using required and validType property, here are the rules already implemented:
- email: Match email regex rule.
- url: Match URL regex rule.
- length[0,100]: Between x and x characters allowed.
To custom validate rule, override $.fn.validatebox.defaults.rules that defines a validator function and invalid message. For example, to define a minLength valid type:
$.extend($.fn.validatebox.defaults.rules, {
minLength: {
validator: function(value, param){
return value.length >= param[0];
},
message: 'Please enter at least {0} characters.'
}
});
Now you can use the minLength validtype:
<input class="easyui-validatebox" validType="minLength[5]">
In the above code, we define a input box that should be inputed at least 5 characters.
Dependencies
none
Options
Override defaults with $.fn.validatebox.defaults
Properties
|
Methods
|
datebox
Usage
Markup
<input id="dd" type="text"></input>
jQuery
$('#dd').datebox(options);
Dependencies
- calendar
- validatebox
Options
Override defaults with $.fn.datebox.defaults
Properties
|
Events
|
Methods
|
calendar
Usage
Markup
<div id="cc" style="width:180px;height:180px;"></div>
jQuery
$('#cc').calendar(options);
Options
Override defaults with $.fn.calendar.defaults
Properties
|
Events
|
o 10.5 window
Usage
Markup
Many window properties can be defined in markup, such as icon, title, etc.
<div id="win" icon="icon-save" title="My Window">
Window Content
</div>
jQuery
To create a window:
$('#win').window(options);
To open a window:
$('#win').window('open');
Dependencies
- draggable
- resizable
- panel
Options
Override defaults with $.fn.window.defaults.
Properties
Many window properties can inhirit from panel, below is the window private properties.
|
Window override some panel properties.
|
Events
Window events is same as panel events, see panel events for more information.
Methods
Window methods is same as panel methods, except the 'header' and 'body' method.
dialog
Usage
Markup
<div id="dd" title="My Dialog" style="width:400px;height:200px;">
Dialog Content.
</div>
jQuery
$('#dd').dialog(options);
Dependencies
- draggable
- resizable
- panel
- window
- linkbutton
Options
Override defaults with $.fn.dialog.defaults.
Properties
Many properties can inhirit from window, below is the dialog private properties:
|
Events
Dialog events is same as window events, see window events for more information.
Methods
Dialog methods is same as window methods, see window methods for more information.
- ·Welcome page
- ·What is a Wiki Site?
- ·How to edit pages?
- ·How to join this site?
- ·Site members
- ·Recent changes
- ·List all pages
- ·Page Tags
- ·Site Manager
Page tags
Add a new page
窗體頂端
窗體底端
Messager
Dependencies
- draggable
- resizable
- panel
- window
- linkbutton
Options
Override defaults with $.messager.defaults.
|
Methods
|
- ·Welcome page
- ·What is a Wiki Site?
- ·How to edit pages?
- ·How to join this site?
- ·Site members
- ·Recent changes
- ·List all pages
- ·Page Tags
- ·Site Manager
Page tags
Add a new page
窗體頂端
窗體底端
Pagination
Usage
Markup
<div id="pp" style="background:#efefef;border:1px solid #ccc;"></div>
jQuery
$('#pp').pagination(options);
Dependencies
- linkbutton
Options
Override defaults with $.fn.pagination.defaults.
Properties
|
Events
|
o 10.6 Datagrid and tree
Usage
Markup
<table id="tt"></table>
jQuery
$('#tt').datagrid(options);
The DataGrid data format sample
{"total":28,"rows":[{"productid":"FI-SW-01","unitcost":10.00,"status":"P","listprice":16.50,"attr1":"Large","itemid":"EST-1"},
{"productid":"K9-DL-01","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Spotted Adult Female","itemid":"EST-10"},
{"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Venomless","itemid":"EST-11"},
{"productid":"RP-SN-01","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Rattleless","itemid":"EST-12"},
{"productid":"RP-LI-02","unitcost":12.00,"status":"P","listprice":18.50,"attr1":"Green Adult","itemid":"EST-13"},
{"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":58.50,"attr1":"Tailless","itemid":"EST-14"},
{"productid":"FL-DSH-01","unitcost":12.00,"status":"P","listprice":23.50,"attr1":"With tail","itemid":"EST-15"},
{"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":93.50,"attr1":"Adult Female","itemid":"EST-16"},
{"productid":"FL-DLH-02","unitcost":12.00,"status":"P","listprice":93.50,"attr1":"Adult Male","itemid":"EST-17"},
{"productid":"AV-CB-01","unitcost":92.00,"status":"P","listprice":193.50,"attr1":"Adult Male","itemid":"EST-18"}]}
Dependencies
- panel
- resizable
- linkbutton
- pagination
Options
DataGrid Properties
Override default with $.fn.datagrid.defaults.
|
Column Properties
The DataGrid Columns is an array object, which element is an array too.
The element of element array is a config object, which defines every column field.
code example:
columns:[[
{field:'itemid',title:'Item ID',rowspan:2,width:80,sortable:true},
{field:'productid',title:'Product ID',rowspan:2,width:80,sortable:true},
{title:'Item Details',colspan:4}
],[
{field:'listprice',title:'List Price',width:80,align:'right',sortable:true},
{field:'unitcost',title:'Unit Cost',width:80,align:'right',sortable:true},
{field:'attr1',title:'Attribute',width:100},
{field:'status',title:'Status',width:60}
]]
|
Editor
Override default with $.fn.datagrid.defaults.editors.
Every editor has following functions:
|
For example, the text editor is defined as following:
$.extend($.fn.datagrid.defaults.editors, {
text: {
init: function(container, options){
var input = $('<input type="text" class="datagrid-editable-input">').appendTo(container);
return input;
},
getValue: function(elem){
return $(elem).val();
},
setValue: function(elem, value){
$(elem).val(value);
},
resize: function(elem, width){
var input = $(elem);
if ($.boxModel == true){
input.width(width - (input.outerWidth() - input.width()));
} else {
input.width(width);
}
}
}
});
Events
|
Methods
|
tree
Usage
Markup
Tree can be definded in <ul/> element. The markup can defines leaf and children, bellow is an example:
<ul id="tt">
<li>
<span>Folder</span>
<ul>
<li>
<span>Sub Folder 1</span>
<ul>
<li>
<span><a href="#">File 11</a></span>
</li>
<li>
<span>File 12</span>
</li>
<li>
<span>File 13</span>
</li>
</ul>
</li>
<li>
<span>File 2</span>
</li>
<li>
<span>File 3</span>
</li>
</ul>
</li>
<li>
<span>File21</span>
</li>
</ul>
Tree can also be defined in an empty <ul/> element:
<ul id="tt"></ul>
jQuery
$('#tt').tree(options);
Tree data format
Every node can contains following properties:
- id: node id, which is important to load remote data
- text: node text to show
- state: node state, 'open' or 'closed', default is 'open'. When set to 'closed', the node have children nodes and will load them from remote site
- checked: Indicate whether the node is checked selected.
- attributes: custom attributes can be added to a node
- children: an array nodes defines some children nodes
Some example:
[{
"id":1,
"text":"Folder1",
"iconCls":"icon-save",
"children":[{
"text":"File1",
"checked":true
},{
"text":"Books",
"state":"open",
"attributes":{
"url":"/demo/book/abc",
"price":100
},
"children":[{
"text":"PhotoShop",
"checked":true
},{
"id": 8,
"text":"Sub Bookds",
"state":"closed"
}]
}]
},{
"text":"Languages",
"state":"closed",
"children":[{
"text":"Java"
},{
"text":"C#"
}]
}]
Dependencies
none
Options
Override defaults with $.fn.tree.defaults.
Tree Node is a javascript object which contains following properties:
- id: An identity value bind to the node.
- text: Text to be showed.
- checked: Whether the node is checked.
- attributes: Custom attributes bind to the node.
- target: Target DOM object.
Properties
|
Events
|
Methods
|
相關文章
- jQuery EasyUI 教程jQueryUI
- jQuery EasyUI API 中文文件 - 表單(form補充)jQueryUIAPIORM
- jQuery基礎教程jQuery
- easyui應用(四)--- easyui擴充套件UI套件
- test easyui with nodejsUINodeJS
- easyui的validtebox使用UI
- easyUI combobox 新增空白項UI
- easyui datagrid 禁止選中行UI
- 使用EasyUI開發銀行業績統計系統[4]-EasyUI表單UI行業
- jQuery Gantt Package設定甘特圖表教程jQueryPackage
- EasyUi之Tabs(選項卡)UI
- easyui datebox 設定只讀UI
- EasyUI 中文亂碼問題UI
- 動力節點jQuery學習教程,jQuery入門看這一篇就夠了jQuery
- 類操作是什麼意思?jQuery的類操作教程jQuery
- jQuery筆記整理教程(常用的API和基礎)jQuery筆記API
- 類操作是什麼意思?jQuery的類操作教程分享jQuery
- 使用EasyUI開發銀行業績統計系統[11]-EasyUI樹形控制元件trUI行業控制元件
- Easyui datagrid 實現表格記錄拖拽UI
- Easyui form提交後input清空的方法UIORM
- EasyUI選擇日期只顯示年月UI
- jQuery初探:自制jQueryjQuery
- 我的’jQuery’和jQueryjQuery
- easyui treegrid行編輯卡慢問題UI
- Spring+SpringMVC+MyBatis+easyUI整合最佳化SpringMVCMyBatisUI
- easyui-layout佈局高度自適應UI
- jQueryjQuery
- 好程式設計師web前端教程分享Jquery常見面試題程式設計師Web前端jQuery面試題
- jQuery入門(三)--- jQuery語法jQuery
- JQuery模板外掛-jquery.tmpljQuery
- jquery列印頁面(jquery.jqprint)jQuery
- JQuery基本知識彙總;JQuery常用方法;淺入瞭解JQueryjQuery
- 像easyUI一樣寫vue——avue後臺整合元件UIVue元件
- jQuery 尺寸jQuery
- jQuery 事件jQuery事件
- jQuery AjaxjQuery
- jQuery碎片jQuery
- jquery事件jQuery事件
- jquery的onjQuery