123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- (function () {
- var KDTable = function (kdtableId, url, columns) {
- this.kdtableId = kdtableId;
- this.url = Feng.ctxPath + url;
- this.method = "post";
- this.columns = columns;
- this.height = "";
- this.scrollable = true;
- this.selectable = true;
- this.groupable = false;
- this.serverPaging = true;
- this.sortable = false;
- this.serverSorting = false;
- this.filterable = false;
- this.serverFiltering = false;
- this.pageSize = 10;
- this.resizable = true;
- this.reorderable = true;
- this.columnMenu = true;
- this.alwaysVisible = false;
- this.readData = {};
- this.queryParams = {};
- this.fields = {};
- if (columns!=null && columns.length>0) {
-
- columns.unshift({field: "rowNumber", title: "序号", width:"80px", template: "<span class='row-number'></span>"});
- for(var i=0; i<columns.length; i++){
- var temp = columns[i];
- if (!temp) {
- break;
- }
- if (temp.type!=null && temp.type!='' && typeof(temp)!="undefined") {
- this.fields[temp.field] = {'type': temp.type};
- } else {
- this.fields[temp.field] = {'type': 'string'};
- }
- }
- }
- };
-
- KDTable.prototype = {
-
- init: function() {
- var tableId = this.kdtableId;
- var me = this;
- this.btInstance = $("#" + tableId).kendoGrid({
- dataSource:{
- transport:{
- read: {
- url: this.url,
- type: this.method,
- dataType: "json",
- contentType: "application/x-www-form-urlencoded",
- data: this.readData
- },
- parameterMap: function(options, operation){
- console.log("====> 查询数据 ======");
- console.log(options);
- if (operation == "read") {
- var parameter = {};
- $.each(options, function(name, value){
- if (name === 'take') {
- parameter.limit = value;
- } else if (name === 'skip') {
- parameter.offset = value
- } else if (name === 'sort') {
- parameter.sort = value[0].field;
- parameter.order = value[0].dir
- } else if (name === 'page') {
-
- } else if (name === 'pageSize'){
-
- }else {
- parameter[name] = value;
- }
- });
-
- if (me.queryParams) {
- $.each(me.queryParams, function(name, value){
- parameter[name] = value;
- });
- }
-
- if (me.readData) {
- $.each(me.readData, function(name, value){
- parameter[name] = value;
- });
- }
- return parameter;
- }
- }
- },
- schema: {
- data: "rows",
- total: "total"
- },
- pageSize: this.pageSize,
- serverPaging: this.serverPaging,
- sortable: this.sortable,
- serverSorting: this.serverSorting,
- alwaysVisible: this.alwaysVisible
- },
-
- dataBound: function() {
- var rows = this.items();
- var page = this.pager.page() - 1;
- var pagesize = this.pager.pageSize();
- $(rows).each(function () {
- var index = $(this).index() + 1 + page * pagesize;
- var rowLabel = $(this).find(".row-number");
- if (rowLabel && rowLabel.length>0) {
- $(rowLabel).html(index);
- }
- });
- },
- columns: this.columns,
- fields: this.fields,
- height: this.height,
- scrollable: this.scrollable,
- selectable: this.selectable,
- groupable: this.groupable,
- filterable: this.filterable,
- serverFiltering: this.serverFiltering,
- resizable: this.resizable,
- columnMenu: this.columnMenu,
- reorderable: this.reorderable,
- sortable: this.sortable,
- serverSorting: this.serverSorting,
- pageable: {
- refresh: true,
- pageSizes: [10, 50, 100, 500, 1000],
- buttonCount: 5
- }
- });
- return this;
- },
-
- setQueryParams: function (param) {
- this.readData = param;
- },
- clearQueryParams: function() {
- this.readData = {};
- },
-
- setPaginationType: function(val) {
- if (val === "server") {
- this.serverPaging = true;
- } else if (val === "client") {
- this.serverPaging = false;
- }
- },
-
- setFilterType: function(val) {
- if (val === "server") {
- this.filterable = true;
- this.serverFiltering = true;
- } else if (val === "client") {
- this.filterable = true;
- }
- },
-
- setSortType: function(val) {
- if (val === "server") {
- this.sortable = true;
- this.serverSorting = true;
- } else if (val === "client") {
- this.sortable = true;
- }
- },
-
- setSelectable: function(bl) {
- this.selectable = bl;
- },
- getSelections: function() {
- var grid = $("#"+this.kdtableId+",.k-grid-content").data("kendoGrid");
- var selected = [];
- var rows = grid.select();
- for(var i=0; i<rows.length; i++){
- var temp = rows.eq(i);
- var className = temp.parent().parent().parent().attr("class");
- if (className === 'k-grid-content-locked') {
- continue;
- }
- selected.push(grid.dataItem(rows[i]))
- }
- return selected;
- },
- refresh: function(val) {
-
- this.readData = {};
- var grid = $("#"+this.kdtableId).data("kendoGrid");
- if (val && val.query) {
- var filter = [];
- var flag = false;
- for (var key of Object.keys(val.query)) {
-
- var value = val.query[key];
- if (value!=null && value!='' && typeof(value)!="undefined") {
- this.readData[key] = value;
- flag = true;
- }else {
- delete val.query[key];
- }
- }
- if (flag && this.serverSorting) {
- val.query.page = 1;
- val.query.pageSize = this.pageSize;
- val.query.take = this.pageSize;
- val.query.skip = 0;
- grid.dataSource.query(val.query);
- } else {
- grid.dataSource.read();
- }
- } else {
- grid.dataSource.read();
- }
- },
-
- setConstantQueryParams: function(val) {
- if (val != null) {
- var temp = {};
- $.each(val, function(name, value){
- if (value!=null && value!='' && typeof(value)!="undefined") {
- temp[name] = value;
- }
- });
- this.queryParams = temp;
- }
- },
-
- pageSize: function(val) {
- this.pageSize = val;
- }
- };
-
- window.KDTable = KDTable;
- }());
|