easyui datagrid 生成動態列後 實現分頁
easyui是一個比較簡單的前端框架,相比Extjs有很大的效能提升,但是對很多處理來說easyui支援的不是很好
下面介紹datagrid動態列生成之後如何實現分頁
easyui datagrid不支援原生事件來動態修改列,只支援修改列屬性,如果要動態生成列只能設定datagrid的options,但是這樣設定以後以前設定的資料屬性和繫結的事件都會被重置,繫結的分頁事件也會重置,這個時候要分頁事件是不能被觸發的。
要解決這種問題就要給datagrid繫結重新繫結事件,一般情況下分頁事件是和查詢事件繫結在一起的,沒事分頁的時候都會觸發動態列的重置,只要將這兩個事件分開處理就行了。
例如一下的例子:
function dataSnapQuery(pageNumber, pageSize) {
var ids = getAllSelectedPoint();
if (ids.length < 1) {
alert('請選擇點');
return;
}
var names = getAllSelectedName();
var idSet = getAllSelectedPointSet();
var pageopt = $('#dataSnapTable').datagrid('getPager').data("pagination").options;
if (!pageNumber) {
pageNumber = 1;
}
if (!pageSize) {
pageSize = pageopt.pageSize;
if (pageSize) {
pageSize = 15
}
}
var beginTime = $('#snapBegin').datetimebox('getValue');
var endTime = $('#snapEnd').datetimebox('getValue');
beginTime = new Date(beginTime).getTime();
endTime = new Date(endTime).getTime();
var interval = $('#dataSnap').textbox('getValue') * 1000;
var snapSelectEU = $('#snapSelectEU').combobox('getValue');
switch (snapSelectEU) {
case 'second':
interval *= 1;
break;
case 'minute':
interval *= 60;
break;
case 'hour':
interval *= 3600;
break;
case 'day':
interval *= 86400;
break;
default :
interval *= 1;
break;
}
var hisType = $('#valueType').combobox('getValue');
//查詢取樣值
if (hisType == 'RAW') {
if (interval != 1000 || snapSelectEU != 'second') {
alert('查詢取樣值時,區間必須是1秒');
$('#dataSnap').textbox('setValue', '1');
$('#snapSelectEU').combobox('setValue', 'second');
return;
}
}
//查詢統計值
if (hisType == 'AVG' || hisType == 'MAX' || hisType == 'MIN' || hisType == 'FLOW') {
if (interval == 1) {
alert('查詢統計值時,區間必須大於1秒');
return;
}
}
//如果是 平均值、最大值、最小值、流量值
if (hisType == 'MIN' || hisType == 'MAX' || hisType == 'AVG' || hisType == 'FLOW') {
if (interval == 1) {
alert('當查詢統計值時,時間間隔必須大於1秒');
return;
}
}
$.ajax({
url: 'historyData_getPointsDesc',
method: 'post',
async: false, // 同步請求資料
data: $.param({
PNS: idSet
}, true),
dataType: 'json',
success: function (dataPar) {
var pointsDesc = dataPar['pointsDesc'];
$.ajax({
type: 'post',
url: 'historyData_getHistoryEx',
data: {
from: beginTime,
to: endTime,
interval: interval,
historyTypeFG: hisType,
pn: ids,
start: (pageNumber - 1) * pageSize,
limit: pageSize
},
dataType: 'json',
success: function (data) {
var namesFiled = pointsDesc;
var columns = new Array();
var column = {};
column["title"] = '時間';
column["field"] = 'time';
column["width"] = 150;
columns.push(column);
if (namesFiled) {
$.each(namesFiled, function (i, name) {
var column = {};
column["title"] = names[i];
column["field"] = 'pn' + i;
column["width"] = 120;
columns.push(column);
});
}
$('#dataSnapTable').datagrid({
columns: [
columns
]
});
var p = $('#dataSnapTable').datagrid('getPager');
$(p).pagination({
pageSize: pageSize,
pageList: [15, 30, 50, 80, 100],//可以設定每頁記錄條數的列表
beforePageText: '第',//頁數文字框前顯示的漢字
afterPageText: '頁 共 {pages} 頁',
displayMsg: '當前顯示 {from} - {to} 條記錄 共 {total} 條記錄',
onSelectPage: function (pageNumber, pageSize) {
dataSnapPageChange(pageNumber, pageSize);
}
});
$('#dataSnapTable').datagrid('loadData', data);
}
});
}
});
}
這是查詢的時候出觸發的,點選查詢按鈕的時候,動態列已經生成了,在分頁的時候不會再次生成動態列了,在條件相同的情況下列的屬性總是一樣的,不一樣的是顯示第多少條到多少條
分頁事件觸發函式:
/**
* 動態載入列時,監聽頁面改變事件
* @param pageNumber
* @param pageSize
*/
function dataSnapPageChange(pageNumber, pageSize) {
var ids = getAllSelectedPoint();
if (ids.length < 1) {
alert('請選擇點');
return;
}
var pageopt = $('#dataSnapTable').datagrid('getPager').data("pagination").options;
if (!pageNumber) {
pageNumber = 1;
}
if (!pageSize) {
pageSize = pageopt.pageSize;
if (pageSize) {
pageSize = 15
}
}
var beginTime = $('#snapBegin').datetimebox('getValue');
var endTime = $('#snapEnd').datetimebox('getValue');
beginTime = new Date(beginTime).getTime();
endTime = new Date(endTime).getTime();
var interval = $('#dataSnap').textbox('getValue') * 1000;
var snapSelectEU = $('#snapSelectEU').combobox('getValue');
switch (snapSelectEU) {
case 'second':
interval *= 1;
break;
case 'minute':
interval *= 60;
break;
case 'hour':
interval *= 3600;
break;
case 'day':
interval *= 86400;
break;
default :
interval *= 1;
break;
}
var hisType = $('#valueType').combobox('getValue');
//查詢取樣值
if (hisType == 'RAW') {
if (interval != 1000 || snapSelectEU != 'second') {
alert('查詢取樣值時,區間必須是1秒');
$('#dataSnap').textbox('setValue', '1');
$('#snapSelectEU').combobox('setValue', 'second');
return;
}
}
//查詢統計值
if (hisType == 'AVG' || hisType == 'MAX' || hisType == 'MIN' || hisType == 'FLOW') {
if (interval == 1) {
alert('查詢統計值時,區間必須大於1秒');
return;
}
}
//如果是 平均值、最大值、最小值、流量值
if (hisType == 'MIN' || hisType == 'MAX' || hisType == 'AVG' || hisType == 'FLOW') {
if (interval == 1) {
alert('當查詢統計值時,時間間隔必須大於1秒');
return;
}
}
$.ajax({
type: 'post',
url: 'historyData_getHistoryEx',
data: {
from: beginTime,
to: endTime,
interval: interval,
historyTypeFG: hisType,
pn: ids,
start: (pageNumber - 1) * pageSize,
limit: pageSize
},
dataType: 'json',
success: function (data) {
$('#dataSnapTable').datagrid('loadData', data);
}
});
}
這兩個事件並沒有多大的不同,查詢時間多了一個獲取動態列的事件。
實際上這個方法還沒有得到完善,很有可能會出現不是想要的資料。
相關文章
- easyui datagrid 動態生成列UI
- jquery easyui datagrid 動態隱藏列jQueryUI
- jQuery EasyUI datagrid實現本地分頁簡單介紹jQueryUI
- asp.net mvc easyui datagrid分頁ASP.NETMVCUI
- Silverlight中DataGrid控制元件動態生成列並結合DataPager進行分頁控制元件
- easyui datagrid動態設定行、列、單元格不允許編輯UI
- EasyUI - DataGrid 去右邊空白滾動條列UI
- Easyui datagrid 實現表格記錄拖拽UI
- WPF DataGrid分頁功能實現程式碼
- EasyUI-DataGrid去右邊空白滾動條列UI
- Flex2 發現之旅:動態建立DataGrid列Flex
- easyui combogrid下拉表格的分頁/按鍵/動態搜尋UI
- easyui datagrid 計算UI
- Java實現後端分頁Java後端
- 用PHP動態生成虛擬現實VRML網頁 (轉)PHPVR網頁
- easyui datagrid 禁止選中行UI
- ASP.NET中自定義DataGrid分頁設定的實現ASP.NET
- Asp.net實現靜態頁-新增新聞生成靜態頁ASP.NET
- FLEX4實踐—動態生成DataGrid及應用客戶化itemRendererFlex
- 分頁實現前臺後臺不同效果,分頁類引入
- EasyUI datagrid 過濾事件段UI事件
- EasyUI 筆記(2)datagrid 使用UI筆記
- flex 多級視窗互調連線oracle動態管理生成動態datagridFlexOracle
- 手動實現ArrayList動態陣列陣列
- Puppeteer 實戰-爬取動態生成的網頁網頁
- easy ui datagrid 資料分頁UI
- EnableViewState="false"的DataGrid分頁 (轉)ViewFalse
- 用AutoLayout實現分頁滾動
- 分頁實現前五後五ajax區域性重新整理方式分頁實現
- SSM動態展示分頁SSM
- 【專案實戰】---EasyUI DataGrid單元格合併UI
- easyui datagrid editor checkbox 選中UI
- WPF的DataGrid使用AutoGenerateColumns自動生成列的時候,控制列的寬度
- 小程式頁面動態配置實現
- EasyUI 中 DataGrid 控制元件 列 如何繫結物件中的屬性UI控制元件物件
- mybatis動態sql與分頁MyBatisSQL
- C 語言實現使用動態陣列實現迴圈佇列陣列佇列
- 動手編寫—動態陣列(Java實現)陣列Java