AngularJS教程八—— 表格DataTables
自定義表格指令edGrid
edGrid是對jQuery DataTables的封裝,增加預設的修改、刪除操作。
一 使用方法:
<table ed-grid class="table table-striped table-bordered table-advance table-hover"
data-options="url: 'user/query.do', model: 'user', form: 'queryForm', lazy: false">
<thead>
<tr>
<th ed-data="_index"></th>
<th ed-data="userCode">使用者名稱</th>
<th ed-data="userName">使用者姓名</th>
<th ed-data="gender | code : 'gender'">性別</th>
<th ed-data="telephone">手機號碼</th>
<th ed-data="userState | code : 'userstate'">使用者狀態</th>
<th ed-data="remark">使用者描述</th>
<th ed-data="_edit">操作</th>
</tr>
</thead>
</table>
通過ed-grid
來定義表格
1、表格使用自定義屬性ed-grid
表格名稱,預設為grid
,用於繫結表格預設事件。如果一個頁面有多個表格,則需要指定ed-grid
的屬性值。
表格通過data-options
來設定表格屬性,其中自定義屬性有:
url
用來知道初始化表格資料的URL,如url="user/query.do"
model
指定編輯或刪除等其他點選事件時所繫結的model ,如model="user"
form
指定查詢條件所屬表單的名稱lazy
是否延遲載入
2、表格的列通過<th>
的自定義屬性來配置
ed-data
用來指定json欄位key,存在幾個預設值:
_index
則該列顯示為行序號_radio
則該列顯示為單選框(此時表格即支援單選),值繫結到所繫結的model上_checkbox
則該列顯示為核取方塊(此時表格即支援多選)繫結到所繫結的model +s
上_edit
則顯示編輯和刪除按鈕ed-data
可使用過濾器filter
來進行格式化輸出。如用code
帶一個引數來做字典轉換,將字典的code值轉為name
二 預設操作
所有的預設方法都繫結在表格名稱上,預設為$scope.grid
,以下都按照預設的來舉例;model
的值按照user
來舉例
query(params)
:查詢,該方法也接收一個引數,ajax請求時會附帶引數,同時該方法還會將與表格名稱相同的form
中的input
加入到查詢引數。reset()
:初始化查詢條件add()
:新增,預設設定$scope.grid.eidt=true
update(row)
:修改,預設設定$scope.grid.eidt=true
,同時繫結ed-model
的值為當前行的資料,如:$scope.user=row
delete(row)
:刪除,提交user/delete.do
來刪除,user為ed-model
的值save()
:儲存,提交user/add.do
來新增或者user/update.do
來修改- 通過設定
<th>
的ed-data="_checkbox"
使表格支援多選時,選中的行會繫結到ed-model
的值+s上,本例中則繫結到users
增刪改查都支援過載,可以根據自己的業務需要在controller中重新實現,比如:
$scope.grid = {
add : function(){
...
}
}
三 自定義列
第一種方式
th
指定ed-data
時同時指定過濾器filter
,如:
<th ed-data="money | number : 8">金額</th><!-- 金額保留兩位小數-->
支援多過濾器及自定義過濾器,過濾器的使用請參考後面過濾器章節教程。
第二種方式
$scope.grid = {
column_defs: [
{
target: 5,
template: '<a href="">Not Amanda Smith?</a>'
},
{
target: 6,
template: function(row) {
return '<a href="">Not Amanda Smith?</a>';
}
},
{
target: 7,
buttons: [
{
name: '角色',
class: 'btn-success',
icon: 'fa-edit',
enable: function(row) {
return true;
},
visiable: function(row) {
return true;
}
event: function(row, btn) {// btn為當前點選的按鈕
}
}
]
}
]
}
通過column_defs
來自定義列
target
用來知道列序號,從0開始template
用來指定列html模板,可以為html字串;也可以為一個方法返回html字串,方法有一個引數row物件來返回列資料。html模板中的事件通過ed-click
來制定,指定回去從$scope.grid
中找到這個方法去呼叫。buttons
指定列按鈕,如果指定了template
,buttons
將會被忽略
buttons
有4個屬性
name
: 按鈕名稱class
: css樣式icon
: 按鈕圖示樣式enable
:是否允許點選,預設可點選,不可點選時增加disabled
classvisiable
:是否顯示,預設顯示event
:function(row, btn) {}
點選事件 注意,如果buttons
對應列的ed-data="_edit"
,則會加入到預設的修改、刪除按鈕之前
四 整合jQuery Datatables屬性
除以上自定義擴充套件外,可使用jQuery Datatables的屬性,這些options也可以通過table
的data-options
屬性來指定,比如:data-options="paging: false, lazy: true"
,使用data-options不能設定下面的onSelect 類似的function
$scope.deptPosGrid = {
options: {
scroller: true,
paging: false,// 是否翻頁
lazy: true,// 是否延遲載入,這個屬性是自定義屬性,jQuery Datatables本身沒有
select :{// 選擇事件
style : 'single',
onSelect : function(rows) {
$scope.pos = rows[0];
}
}
}
};
五 表格編輯
表格目前支援點選單元格變成輸入框進行編輯。開啟的方式為:表頭的列通過<th>
增加class="edited input|select"
目前僅支援這兩種,未來繼續擴充套件。
注:如果通過column_defs
格式化單元格顯示,尚不支援編輯完之後再次格式化
編輯模式下,表格多了一個方法:
getChangedRows()
:獲取修改後的行
相關文章
- DataTables表格外掛使用說明
- JQuery datatables 給表格新增載入中效果jQuery
- Angularjs——初識AngularJSAngularJS
- ASP.NET MVC下使用AngularJs語言(八):顯示htmlASP.NETMVCAngularJSHTML
- Angularjs 從入門到實戰(含專案教程)AngularJS
- 第八課 表格 html5學習3HTML
- dataTables.js知識JS
- datatables服務端分頁服務端
- AngularJS(二、如何用AngularJS建立前端程式碼框架)AngularJS前端框架
- Excel表格如何隔行填充顏色?Excel表格底色隔行填充方法教程Excel
- Docker教程之八搭建RedisDockerRedis
- AngularJS整理(1.0.0)AngularJS
- 初識AngularJSAngularJS
- AngularJS之FilterAngularJSFilter
- Java中使用Jsoup解析HTML表格教程JavaJSHTML
- [開發教程]第14講:Bootstrap表格boot
- DataTables 1.10錯誤: requested unknown parameter
- 前端外掛之Datatables使用--下篇前端
- 前端外掛之Datatables使用--上篇前端
- datatables使用ajax獲取資料
- Kotlin教程(八)高階函式Kotlin函式
- AngularJS 4(三)【指令】AngularJS
- AngularJS 4(五)【管道】AngularJS
- AngularJS 4(七)【路由】AngularJS路由
- AngularJS快速開始AngularJS
- AngularJS核心之DirectiveAngularJS
- MVC5和Jquery Datatables1.10MVCjQuery
- Datatables學習筆記——columns.render筆記
- 電腦製作excel表格全步驟 excel製作表格的步驟教程Excel
- Datatables.js選項之DOM:定義表格控制元件在頁面的顯示順序以及language語言選項JS控制元件
- Java入門教程八(物件導向)Java物件
- Angularjs 學習總結AngularJS
- AngularJS之Scope及ControllerAngularJSController
- Angularjs的工程化AngularJS
- Jquery DataTables解決 Cannot reinitialise DataTable 問題jQuery
- Flask 教程 第八章:粉絲Flask
- Dreamweaver網頁製作教程:表格設計例項網頁
- Angularjs學習筆記指令AngularJS筆記
- AngularJS動態設定CSSAngularJSCSS