angularjs之ui-grid 使用详解

最近一段时间在使用AngularJS 然后就找到ui-grid 这个比较不错的表格插件,感觉还不错,所以分享给大家(ps:新手第一次发)

html:

[html]  view plain  copy
  1. <pre name="code" class="html">  
  2. <link rel="stylesheet" type="text/css" href="../lib/angular-ui/ui-grid/ui-grid.min.css">  
  3. <div class="gridStyle" ui-grid="gridOptions" ui-grid-selection ui-grid-resize-columns ui-grid-auto-resize ui-grid-exporter ui-grid-edit ui-gird-pagination ui-grid-cellnav>  
  4. div>  
  5.   
  6. <script src="../lib/angular-ui/ui-grid/ui-grid.min.js">script>  
  7.   
  8. <script src="../lib/angular-ui/ui-grid/csv.js">script>  
  9.   
  10. <script src="../lib/angular-ui/ui-grid/pdfmake.min.js">script>  
  11. <script src="../lib/angular-ui/ui-grid/vfs_fonts.js">script>  
  12.   
  13.   
  14.   
  15.   
  16.   
  17.   
  18.   
  19.   
  20.   


 js: 
  
[javascript]  view plain  copy
  1. angular.module('app', ['ui.grid','ui.grid.selection','ui.grid.resizeColumns','ui.grid.autoResize','ui.grid.edit','ui.grid.exporter','ui.grid.pagination','ui.grid.cellNav'])  
  2. .controller('RootCtrl'function($scope,i18nService) {//前四个基本上是必用到的 后面的可以根据自身情况去加  
  3.             // 国际化;  
  4.             i18nService.setCurrentLang('zh-cn');  
  5.             $scope.gridOptions = {  
  6.                 data : 'myData',  
  7.                 //基础属性  
  8.                 enableSorting : true,//是否支持排序(列)  
  9.                 useExternalSorting : false,//是否支持自定义的排序规则  
  10.                 enableRowHeaderSelection : false,  
  11.                 enableGridMenu : false,//是否显示表格 菜单  
  12.                 showGridFooter: true,//时候显示表格的footer  
  13.                 enableHorizontalScrollbar : 1,//表格的水平滚动条  
  14.                 enableVerticalScrollbar : 1,//表格的垂直滚动条 (两个都是 1-显示,0-不显示)  
  15.                 selectionRowHeaderWidth : 30,  
  16.                 enableCellEditOnFocus:false,//default为false,true的时候单击即可打开编辑(cellEdit为true的时候,需要引入'ui.grid.cellNav')  
  17.                 //分页属性  
  18.                 enablePagination: true//是否分页,default为true  
  19.                 enablePaginationControls: true//使用默认的底部分页  
  20.                 paginationPageSizes: [10, 15, 20], //每页显示个数选项  
  21.                 paginationCurrentPage:1, //当前的页码  
  22.                 paginationPageSize: 10, //每页显示个数  
  23.                 paginationTemplate:"
    "
    //自定义底部分页代码  
  24.                 totalItems : 0, // 总数量  
  25.                 useExternalPagination: true,//是否使用分页按钮            
  26.                 //选中  
  27.                 rowTemplate: "
",//双击行事件  
  •                 enableFooterTotalSelected: true// 是否显示选中的总数,default为true,如果显示,showGridFooter 必须为true  
  •                 enableFullRowSelection : true//是否点击行任意位置后选中,default为false,当为true时,checkbox可以显示但是不可选中  
  •                 enableRowHeaderSelection : true//是否显示选中checkbox框 ,default为true  
  •                 enableRowSelection : true// 行选择是否可用,default为true;  
  •                 enableSelectAll : true// 选择所有checkbox是否可用,default为true;   
  •                 enableSelectionBatchEvent : true//default为true  
  •                 modifierKeysToMultiSelect: false ,//default为false,为true时只能按ctrl或shift键进行多选,这个时候multiSelect必须为true;  
  •                 multiSelect: true ,// 是否可以选择多个,默认为true;  
  •                 noUnselect: false,//default为false,选中后是否可以取消选中  
  •                 selectionRowHeaderWidth:30 ,//default为30,设置选择列的宽度  
  •                 //api   
  •                 onRegisterApi : function (gridApi) {  
  •                     $scope.gridApi = gridApi;  
  •                     $scope.gridApi.edit.on.afterCellEdit($scope,function(rowEntity){  
  •                         //编辑离开事件  
  •                     });  
  •                       
  •                     $scope.gridApi.selection.on.rowSelectionChanged($scope,function(row,event){  
  •                        //行选中事件  
  •                      });  
  •                 },  
  •                  
  •                 //导出(只支持csv,扩展性不太好)  
  •                 exporterAllDataFn: function(){//导出全部  
  •                        return getAllData();  
  •                 },  
  •                 exporterCsvColumnSeparator: ',',  
  •                 exporterCsvFilename:'testdown.csv',  
  •                 exporterFieldCallback : function ( grid, row, col, value ){//导出回调可以过滤条件  
  •                   
  •                     return value;  
  •                 },  
  •                 exporterHeaderFilterUseName : true,  
  •                 exporterMenuCsv : true,  
  •                 exporterMenuLabel : "Export",  
  •                 exporterMenuPdf : true,  
  •                 exporterOlderExcelCompatibility : false,//是否兼容低版本excel  
  •                 exporterPdfCustomFormatter : function ( docDefinition ) {  
  •                  docDefinition.styles.footerStyle = { bold: true, fontSize: 10 };  
  •                  return docDefinition;  
  •                 },  
  •                 exporterPdfFooter :{   
  •                                      text: '',   
  •                                      style: ''   
  •                                    },  
  •                 exporterPdfDefaultStyle : {  
  •                   fontSize: 11,font:'simblack' //font 设置自定义字体  
  •                 },  
  •                 exporterPdfFilename:'testdown.pdf',  
  •                 exporterPdfFooter: function(currentPage, pageCount) {   
  •                        return currentPage.toString() + ' of ' + pageCount;   
  •                 },  
  •                 exporterPdfHeader : function(currentPage, pageCount) {   
  •                    return currentPage.toString() + ' of ' + pageCount;   
  •                 },  
  •                 exporterPdfMaxGridWidth : 720,  
  •                 exporterPdfOrientation : 'landscape',//  'landscape' 或 'portrait' pdf横向或纵向  
  •                 exporterPdfPageSize : 'A4',// 'A4' or 'LETTER'   
  •                 exporterPdfTableHeaderStyle : {  
  •                  bold: true,  
  •                  fontSize: 12,  
  •                  color: 'black'  
  •                 },  
  •                 exporterPdfTableLayout : null,  
  •                 exporterPdfTableStyle: {  
  •                  margin: [0, 5, 0, 15]  
  •                 },  
  •                 exporterSuppressColumns : ['name'],//过滤不需要的列  
  •                 exporterSuppressMenu: false,  
  •                 //列属性设置  
  •                  columnDefs: [{   field: 'name',   
  •                                  displayName: '名字',   
  •                                  width: '100'//宽度设置  
  •                                  enableColumnMenu: false,// 是否显示列头部菜单按钮  
  •                                  //enableHiding: false,  
  •                                  //suppressRemoveSort: true,  
  •                                  enableCellEdit: false// 是否可编辑  
  •                                  cellEditableCondition:function($scope){  
  •                                     return boolean;//是否编辑控制  
  •                                  },  
  •                                  visible:true,是否显示defaulttrue,  
  •                                  cellTemplate : '{{row.entity.name==1?"重写":""}}',//重写cell  
  •                                  cellClass: function(grid, row, col, rowRenderIndex, colRenderIndex) {  
  •                                   //做一些判断。。。  
  •                                   return 'red'//自定义样式   
  •                                 },  
  •                                  //cell下拉  
  •                                  editableCellTemplate: 'ui-grid/dropdownEditor',  
  •                                  editDropdownOptionsArray: [],//[{name:1,nameText:'Yoko'}]  
  •                                  editDropdownIdLabel: 'name',//id  
  •                                  editDropdownValueLabel: 'nameText',//显示的名字  
  •                                    
  •                                  cellFilter:"nameFilet"//过滤器  
  •                              }  
  •                                
  •                             ],  
  •             };  
  •           var myData=[{name:''}];  
  •         });  




  • 用到的自定义指令:
    [javascript]  view plain  copy
    1. .directive('dblClickRow', ['$compile''$parse'function($compile, $parse) {  
    2.           return {  
    3.             priority : -190, // run after default uiGridCell directive  
    4.             restrict : 'A',  
    5.             scope : false,  
    6.   
    7.             compile: function($element, attr) {  
    8.   
    9.                 // Get the function at ng-dblclick for ui-grid  
    10.                 var fn = $parse(attr['ngDblclick'], /* interceptorFn */ null/* expensiveChecks */ true);  
    11.   
    12.                 return function ngEventHandler(scope, element) {  
    13.   
    14.                     element.on('dblclick'function(event) {  
    15.   
    16.                       var callback = function() {  
    17.   
    18.                         if ($scope.gridApi.grid.selection.lastSelectedRow)  
    19.                         {  
    20.                             fn($scope, {$event:event, row: $scope.gridApi.grid.selection.lastSelectedRow.entity });  
    21.                         }  
    22.                       };  
    23.   
    24.                       $scope.$apply(callback);  
    25.   
    26.                     }  
    27.                 )};  
    28.   
    29.             }  
    30.   
    31.             };  
    32.         } ])  


    ui-grid  api:http://ui-grid.info/docs/#/api/

    你可能感兴趣的:(Angular)