EasyUI框架02——datagrid

        datagrid是easyUI使用比较常用的一个组件,列表等基本功能的使用,可以参考easyUI的API。

1. Editor的用法

editor编辑器是easyUI中比较重要的一个东东,在其他组件中都有其身影。

1.1 常用API

1.1.1 获取

1)获取编辑器

获取索引值为index,字段field的编辑器

var editor = $(this).datagrid('getEditor', {index: index, field: field});

2)获取编辑器数据

1. 获取combobox的数据

var editors = $('#product_info_table').datagrid('getEditors', index);      
productName = editors[0].target.combobox('getValue');

2. 获取input的数据

var editors = $('#product_info_table').datagrid('getEditors', index);      
productName = editors[1].target.val();

1.1.2 编辑器的生命周期

1)开始编辑器

$("#id").datagrid('beginEdit', index);

2)结束编辑器

$("#id").datagrid('endEdit', currentEditIndex);

3)取消编辑器

$("#product_info_table").datagrid('cancelEdit',index);

1.1.3 聚焦到编辑行

$(editor.target).focus();

1.2 动态编辑器

1.2.1 定义

/*

 * 动态Editor

 * */

function initEditor(type){

     if(type === 'treegrid'){

          $.extend($.fn.treegrid.methods, {   

             addEditor : function(jq, param) {  

                 if (param instanceof Array) {  

                     $.each(param, function(index, item) { 

                         var e = $(jq).treegrid('getColumnOption', item.field);

                         e.editor = item.editor; });

                     } else {   

                         var e = $(jq).treegrid('getColumnOption', param.field);   

                         e.editor = param.editor;   

                     }  

                 }, 

             removeEditor : function(jq, param) {   

                 if (param instanceof Array) {  

                     $.each(param, function(index, item) { 

                         var e = $(jq).treegrid('getColumnOption', item);  

                         e.editor = {}; 

                         });

                 } else {   

                     var e = $(jq).treegrid('getColumnOption', param);

                     e.editor = {}; 

                 }  

             }

         });

     }

     if(type === 'datagrid'){

          $.extend($.fn.datagrid.methods, {   

             addEditor : function(jq, param) {  

                 if (param instanceof Array) {  

                     $.each(param, function(index, item) { 

                         var e = $(jq).datagrid('getColumnOption', item.field);

                         e.editor = item.editor; });

                     } else {   

                         var e = $(jq).datagrid('getColumnOption', param.field);   

                         e.editor = param.editor;   

                     }  

                 }, 

             removeEditor : function(jq, param) {   

                 if (param instanceof Array) {  

                     $.each(param, function(index, item) { 

                         var e = $(jq).datagrid('getColumnOption', item);  

                         e.editor = {}; 

                         });

                 } else {   

                     var e = $(jq).datagrid('getColumnOption', param);

                     e.editor = {}; 

                 }  

             }

         });

     }

}

1.2.2 使用

// 动态添加编辑器

for(var i = colFlag+1 ; i < 13 ; i++){

    $("#grid").treegrid('addEditor',[ //添加cardNo列editor

        {field:("month"+i),editor:{

                type:'numberbox',

                options:{

                    required:true,

                    precision:4

                }

        }

    }]);

}

2. datagrid的常用API

1)'loadData'与checkAll的用法

$("#dtsTable").datagrid('loadData', data).datagrid("checkAll");

2)选中某行'selectRow'

$("#dtsTable").datagrid('selectRow',index);

3)更新某行的数据'updateRow'

$("#dtsTable").datagrid('updateRow', {index: index,row:{data:row}});

$("#dtsTable").datagrid('updateRow', {index: index,row:{owner:row.owner}});

$('#grid').treegrid('updateRow',{index: index,row: JSON.parse(oldRowStr)});

4)获取datagrid的数据

var rows = $("#dtsTable").datagrid('getData').rows

var rowData = $("#product_info_table").datagrid('getRows')

5)获取行索引

Var index = $("#changeGrid").datagrid('getRowIndex',rowData[index]);

6)删除某行

$("#product_info_table").datagrid('deleteRow',index);

7)获取改变的行

var changes = $('#product_info_table').datagrid('getChanges',’ updated’);

一般用于editor中

8)插入一行

$('#product_info_table').datagrid('insertRow',{row:newRow});

注意:

当插入一行的时候,如果列表为空,那么插入一行的数据不会以列表展示,例如

image.png

 

这时候,需要添加样式

$("div[class='datagrid-body'] table").addClass("datagrid-btable");

例如:

var newRow = {
     productName: '',
     emuiVersion: '',
     projectType: '',
     marketType: '',
     finishDate: '',
     ratio: ''
};

function addPlanInfo(){
     $("#addPlanInfo").bind('click',function(){
          $('#product_info_table').datagrid('insertRow',{row:newRow});
          $("div[class='datagrid-body'] table").addClass("datagrid-btable");
          // 插入时候,触发编辑事件
          newIndex = $('#product_info_table').datagrid("getRowIndex",newRow);
          editRow(newIndex,true);  // true表示为新增的编辑
     })
}

9)刷新表格

$('#grid').datagrid('reload');

3. 合并单元格

3.1 定义

$.extend($.fn.datagrid.methods, {
                       autoMergeCells: function(jq, fields) {
                           return jq.each(function() {
                               var target = $(this);
                               if (!fields) {
                                   fields = target.datagrid("getColumnFields");
                               }

                               var rows = target.datagrid("getRows");
                               var i = 0,
                               j = 0,
                               temp = {};
                               for (i; i < rows.length; i++) {
                                   var row = rows[i];
                                   j = 0;
                                   for (j; j < fields.length; j++) {
                                       var field = fields[j];
                                       var tf = temp[field];
                                       if (!tf) {
                                           tf = temp[field] = {};
                                           tf[row[field]] = [i];
                                       } else {
                                           var tfv = tf[row[field]];
                                           if (tfv) {
                                               tfv.push(i);
                                           } else {
                                               tfv = tf[row[field]] = [i];
                                           }
                                       }
                                   }
                               }

                               $.each(temp,
                                   function(field, colunm) {
                                   $.each(colunm,
                                   function() {
                                       var group = this;
 
                                       if (group.length > 1) {
                                           var before, after, megerIndex = group[0];
                                           for (var i = 0; i < group.length; i++) {
                                               before = group[i];
                                               after = group[i + 1];
                                               if (after && (after - before) == 1) {
                                                   continue;
                                               }

                                               var rowspan = before - megerIndex + 1;
                                               if (rowspan > 1) {
                                                   target.datagrid('mergeCells', {
                                                       index: megerIndex,
                                                       field: field,
                                                       rowspan: rowspan
                                                   });
                                               }

                                               if (after && (after - before) != 1) {
                                                   megerIndex = after;
                                               }
                                           }
                                       }
                                   });
                               });
                           });
                       }
                   });

3.2 使用

例如:将a和b合并

onLoadSuccess:function(data){
          $(this).datagrid("autoMergeCells", [‘a’, ‘b’]);
},

4. queryParam条件查询

// 给按钮绑定属性
$("#searchStave").bind('click', function(){
// $("#grid").datagrid('reload');

//查询参数直接添加在url中        

//查询参数直接添加在queryParams中   

var queryParams = $('#grid').datagrid('options').queryParams; 

queryParams.product = $("#product").combobox('getValue');
queryParams.product_model = $("#product_model").val();
queryParams.zone = $("#zone").val();
queryParams.operator = $("#operator").val();
$('#grid').datagrid('options').queryParams=queryParams;       
    $("#grid").datagrid('reload');
});