zoukankan      html  css  js  c++  java
  • ui-grid使用详解

    HTML

    <pre name="code" class="html"><!--ui-grid css-->
    <link rel="stylesheet" type="text/css" href="../lib/angular-ui/ui-grid/ui-grid.min.css">
    <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>
    </div>
    <!--ui-grid js-->
    <script src="../lib/angular-ui/ui-grid/ui-grid.min.js"></script>
    <!--ui-grid excel export-->
    <script src="../lib/angular-ui/ui-grid/csv.js"></script>
    <!--ui-grid pdf export-->
    <script src="../lib/angular-ui/ui-grid/pdfmake.min.js"></script>
    <script src="../lib/angular-ui/ui-grid/vfs_fonts.js"></script>
    <!--ui-grid-selection 选择行指令-->
    <!--ui-grid-resize-columns 表格宽可拉伸指令-->
    <!--ui-grid-auto-resize 自动使用div的高度和宽度指令-->
    <!--ui-grid-exporter 导出指令-->
    <!--ui-grid-edit 编辑指令-->
    <!--ui-gird-pagination 分页指令-->
    <!--ui-gird-pagination 分页指令-->
    <!--ui-grid-cellnav 单元格指令-->
    <!--gridStyle 自定义设置样式-->

    JS

    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'])
    
    .controller('RootCtrl', function($scope,i18nService) {//前四个基本上是必用到的 后面的可以根据自身情况去加
                // 国际化;
    
                i18nService.setCurrentLang('zh-cn');
    
                $scope.gridOptions = {
                    data : 'myData',
    
                    //基础属性
    
                    enableSorting : true,//是否支持排序(列)
    
                    useExternalSorting : false,//是否支持自定义的排序规则
    
                    enableRowHeaderSelection : false,
    
                    enableGridMenu : false,//是否显示表格 菜单
    
                    showGridFooter: true,//时候显示表格的footer
    
                    enableHorizontalScrollbar : 1,//表格的水平滚动条
    
                    enableVerticalScrollbar : 1,//表格的垂直滚动条 (两个都是 1-显示,0-不显示)
    
                    selectionRowHeaderWidth : 30,
    
                    enableCellEditOnFocus:false,//default为false,true的时候单击即可打开编辑(cellEdit为true的时候,需要引入'ui.grid.cellNav')
    
                    //分页属性
    
                    enablePagination: true, //是否分页,default为true
    
                    enablePaginationControls: true, //使用默认的底部分页
    
                    paginationPageSizes: [10, 15, 20], //每页显示个数选项
    
                    paginationCurrentPage:1, //当前的页码
    
                    paginationPageSize: 10, //每页显示个数
    
                    paginationTemplate:"<div></div>", //自定义底部分页代码
    
                    totalItems : 0, // 总数量
    
                    useExternalPagination: true,//是否使用分页按钮
    
                    //选中
    
                    rowTemplate: "<div ng-dblclick="grid.appScope.onDblClick(row)" ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" ui-grid-cell></div>",//双击行事件
    
                    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: '名字',
    
                                      '100', //宽度设置
    
                                     enableColumnMenu: false,// 是否显示列头部菜单按钮
    
                                     //enableHiding: false,
    
                                     //suppressRemoveSort: true,
    
                                     enableCellEdit: false, // 是否可编辑
    
                                     cellEditableCondition:function($scope){
                                        return boolean;//是否编辑控制
                                     },
    
                                     visible:true,是否显示default为true,
    
                                     cellTemplate : '<a href="" ng-click="grid.appScope.viewPages(row.entity);">{{row.entity.name==1?"重写":""}}</a>',//重写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:''}];
            });

    自定义指令

    .directive('dblClickRow', ['$compile', '$parse', function ($compile, $parse) {
        return {
            priority: -190, // run after default uiGridCell directive
    
            restrict: 'A',
    
            scope: false,
    
            compile: function ($element, attr) {
                // Get the function at ng-dblclick for ui-grid
    
                var fn = $parse(attr['ngDblclick'], /* interceptorFn */ null, /* expensiveChecks */ true);
    
                return function ngEventHandler(scope, element) {
                    element.on('dblclick', function (event) {
                        var callback = function () {
                            if ($scope.gridApi.grid.selection.lastSelectedRow) {
                                fn($scope, { $event: event, row: $scope.gridApi.grid.selection.lastSelectedRow.entity });
                            }
                        };
    
                        $scope.$apply(callback);
                    }
    
                    )
                };
            }
        };
    }])
  • 相关阅读:
    了解node.js
    RC4 in TLS is Broken: Now What?
    LDAP 在ubuntu14.04下的安装配置install and configure
    Bucking the stigma (留学生请摘掉有色眼镜看社区大学)
    SSL Labs: Increased Penalty When TLS 1.2 Is Not Supported
    PostgresQL中的NUlls first/last功能
    网页小工具集合
    T-SQL在线格式化工具
    sudoers文件解析
    Java提高篇——JVM加载class文件的原理机制
  • 原文地址:https://www.cnblogs.com/lishidefengchen/p/9244884.html
Copyright © 2011-2022 走看看