[转]angularjs之ui-grid 使用详解
本文转自:http://blog.csdn.net/qhkabuqiluo/article/details/52237710
最近一段时间在使用angularjs 然后就找到ui-grid 这个比较不错的表格插件,感觉还不错,所以分享给大家(ps:新手第一次发)
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 自定义设置样式-->

<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: '名字',
- width: '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:''}];
- });

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: '名字',
width: '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);
- }
- )};
- }
- };
- } ])

.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);
}
)};
}
};
} ])
ui-grid api:http://ui-grid.info/docs/#/api/
[转]angularjs之ui-grid 使用详解的更多相关文章
- AngularJS select中ngOptions用法详解
AngularJS select中ngOptions用法详解 一.用法 ngOption针对不同类型的数据源有不同的用法,主要体现在数组和对象上. 数组: label for value in a ...
- 转载 《AngularJS》5个实例详解Directive(指令)机制
<AngularJS>5个实例详解Directive(指令)机制 大漠穷秋 本文整理并扩展了<AngularJS>这本书第六章里面的内容,此书近期即将由电子工业出版社出版,敬请 ...
- LigerUI之Grid使用详解(三)——字典数据展示
一.问题概述 在开发web信息管理系统时,使用Web前端框架可以帮助我们快速搭建一组风格统一的界面效果,而且能够解决大多数浏览器兼容问题,提升开发效率.在关于LigerGrid的前两篇的内容里,给大家 ...
- css之Grid Layout详解
css之Grid Layout详解 CSS Grid Layout擅长将页面划分为主要区域,或者在从HTML基元构建的控件的各个部分之间定义大小,位置和图层之间的关系. 与表格一样,网格布局使作者能够 ...
- angularjs 指令(directive)详解(1)
原文地址 什么是directive?我们先来看一下官方的解释: At a high level, directives are markers on a DOM element (such as an ...
- iOS开发——UI篇&ScrollView详解
创建方式 1:StoryBoard/Xib 这里StoarBoard就不多说,直接拖就可以,说太多没意思,如果连这个都不会我只能先给你跪了! 2:代码: CGRect bounds = [ [ UIS ...
- AngularJS语法基础及数据绑定——详解各种数据绑定指令、属性应用
AngularJS简单易学,但是功能强大.特别是在构建单页面应用方面效果显著.而 数据绑定 可以说是他被广泛使用的最主要的优点.他舍弃了对DOM的操作方式,一切都由AngularJS来自动更新视图,我 ...
- 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ; 一. UI 控件简介 1. UI 控件分类 UI 控件分类 : 活 ...
- angularjs中的路由介绍详解 ui-route(转)
http://www.cnblogs.com/littlemonk/p/5500801.html 这篇文章主要介绍了Angularjs中UI Router全攻略,涉及到angularjs ui rou ...
- angularjs中的路由介绍详解 ui-route
这篇文章主要介绍了Angularjs中UI Router全攻略,涉及到angularjs ui router的基本用法,需要的朋友参考下吧 首先给大家介绍angular-ui-router的基本用 ...
随机推荐
- Linux基本命令集合
#Linux查看版本当前操作系统内核信息 uname -a #Linux查看当前操作系统版本信息 cat /proc/version #Linux查看版本当前操作系统发行版信息 cat /etc/is ...
- QTP如何准确识别Dialog中的对象
QTP脚本中有一个点击网页弹出框确定按钮的操作,实际运行时发现存在问题:调试过程,可正常识别并点击:但批量运行时不能识别并点击的概率接近100%. 修改WinButton的其中一个对象属性后,该问题解 ...
- 8、insert、delete、update语句总结
insert常用语句 > insert into tb1 (name,age) values('tom',33); > insert into tb1 (name,age) values( ...
- while循环/格式化输出/ 逻辑运算/ 编码 /单位转换
一.while 循环 1. 循环 while 条件: 代码块(循环体) else: 当上面的条件为假. 才会执行 执行顺序: 判断条件是否为真. 如果真. 执行循环体. 然后再次判断条件....直到循 ...
- PHP中预定义超全局数组(变量)
PHP中许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用.超全局变量除了具有全局变量特点外,在函数或方法中无需执行global $variable:就可以访问它们. 提供超全 ...
- logstash--使用ngxlog收集windows日志
收集流程 1nxlog => 2logstash => 3elasticsearch 1. nxlog 使用模块 im_file 收集日志文件,开启位置记录功能 2. nxlog 使用模块 ...
- Springboot第三篇:与前端fetch通信(关于前端传输json数据上传文件等等前后端的处理)
关于前端接口传递的方法,推荐按以下使用: 若要在服务器上创建资源,推荐使用POST方法 若要检索某个资源,推荐使用GET方法 若要更新资源,推荐使用PUT方法 若要删除某个资源,推荐使用DELETE方 ...
- http、tcp及从请求到渲染的过程
http.tcp及从请求到渲染的过程 https://blog.csdn.net/pambassador/article/details/88539478 http请求的结构内容 https://ww ...
- leetcode 53 最大子序列之和(动态规划)
思路:nums为给定的数组,动态规划: 设 一维数组:dp[i] 表示 以第i个元素为结尾的一段最大子序和. 1)若dp[i-1]小于0,则dp[i]加上前面的任意长度的序列和都会小于nums[i], ...
- JVM 统计监测命令
参考 深入理解JVM(七)——性能监控工具 JVM性能调优监控工具专题一 JVM调优总结 + jstat 分析 1. 进入 jdk 目录 cd /usr/local/jdk/bin 2. 查询所有 j ...