AngularJS表格神器“ui-grid”的应用
HTML: (代码仅用于解释得更清楚,并未完全展示)
<!doctype html>
<html ng-app="app">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-touch.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-animate.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/csv.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/pdfmake.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/vfs_fonts.js"></script>
<script src="/release/ui-grid.js"></script>
<script src="/release/ui-grid.css"></script>
<script src="app.js"></script>
</head>
<body>
<div ng-controller="MainCtrl">
<div id="user-grid" ui-grid="gridOptions" class="user-grid" ui-grid-resize-columns ui-grid-edit></div></div>
</div>
</body>
</html>
ui-grid-resize-columns:使列可以改变宽度,像这样:

依赖注入
var app = angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.resizeColumns', 'ui.grid.moveColumns', 'ui.grid.edit', 'ui.grid.pagination']);
app.controller('MainCtrl', ['$scope', function ($scope, i18nService) { i18nService.setCurrentLang("zh-cn");
$scope.gridOptions = {
enableSorting: true,
//编辑完成后执行事件
onRegisterApi: function (gridApi) {
$scope.gridApi = gridApi;
$scope.gridApi.edit.on.afterCellEdit($scope, function (rowEntity) {
//编辑离开事件
$http.post('/manage/api/dictionary/update', {
"accountName": rowEntity.accountName,
"userName": rowEntity.userName,
"unitName": rowEntity.unitName,
})
.success(function (data) {
if (data.meta.success) {
alert('修改成功');
} else {
alert(data.meta.message);
}
})
.error(function () {
toastr.warning("服务器出错,无法获取数据");
});
});
},
columnDefs: [
{field: 'accountName', displayName:'手机号', width: 200},
{field: 'userName', displayName:'用户名', width: 100},
{field: 'unitName', displayName:'单位', width: 300},
{
field: 'createTime', displayName: '注册时间', width: 200,
cellTemplate: '<div class="ui-grid-cell-contents"><span ng-bind="grid.appScope.rDateFormat(row.entity.createTime)"></span></div>'
},
{
field: 'roleList', displayName: '类型', width: 200,
cellTemplate: '<div class="ui-grid-cell-contents"><span ng-repeat="item in row.entity.roleList" style="margin-right:5px;">{{item.roleName}}</span></div>'
},
{
field: 'accountId', displayName: '详细信息', width: 200,
cellTemplate: '<div class="ui-grid-cell-contents">
<button type="button"
ng-click="grid.appScope.showAccountDetail(row.entity.roleList, row.entity.accountId)"
style="line-height: normal" class="btn-primary btn">查看详情</button></div>'
}
]
};
$scope.gridOptions.data = [
{
'accountName':'15555555555',
'userName':'浮生若梦',
'unitName':'无',
'createTime':1506661676435,
'roleList':[{roleName:'前端','roleId':2},{roleName:'后端','roleId':3}],
'accountId':201
},
{
'accountName':'15555555555',
'userName':'浮生若梦',
'unitName':'无',
'createTime':1506661676435,
'roleList':[{roleName:'前端','roleId':2},{roleName:'后端','roleId':3}],
'accountId':201
}
] }]);
效果如下:

ui-grid使用中文:i18nService.setCurrentLang("zh-cn");
设置ui-grid格式:通过html中的ui-grid='gridOptions' (gridOptions可以自己定义) 再通过$scope.gridOptions来绑定
在上面的代码中:
enableSorting:定义是否排序
对于列的定义columnDefs中:
field就是表格数据$scope.gridOptions.data中的字段,
displayName就是显示在表格中的显示的列项名,如果没有定义,那么显示的就是field的名称
单元格编辑和提交到后台:
模块依赖中加入ui.grid.edit ----> var app = angular.module('app', ['ui.grid.edit']); 添加指令ui-grid-edit到表格的<div>标签中
列定义columnDefs中添加 enableCellEdit: true ----> columnDefs: [{field: 'dictionaryId', enableCellEdit: true, width: 150}]
单元格可编辑了,那编辑后的数据怎么提交到后台?
在$scope.gridOptions = {}对象中添加该属性
onRegisterApi: function (gridApi) {
$scope.gridApi = gridApi;
$scope.gridApi.edit.on.afterCellEdit($scope, function (rowEntity) {//编辑完成后执行});
}
具体参考代码。
ui-grid怎么单独定义一个单元格的样式?比如做成一个按钮,点击查看详情
可以使用cellTemplate属性,但是需要注意的是,单元格定义的html中如果要绑定函数,并不能像angular常规的来绑定,需要在绑定的函数前加上“grid.appScope”,比如“grid.appScope.func()”
ui-grid如果要将某行的某个数据传入函数中需要使用这样的形式:“row.entity.createTime”,creatTime就是你要传入的参数的名称(对应于“field”)
表格的数据可以通过请求后端接口来获取,赋值给$scope.gridOptions.data,需要注意数据格式是否符合要求,否则就要先处理好。 有时候宽度全部用百分比时(这样做的好处是可以根据表格宽度自适应调整列宽),发现列挤到一起了。我在项目中碰到的是一个页面用到多张表格,通过ng-show来显示相应表格,当用百分比布局时,发现列全挤到一起了,我当时的解决办法是使用ng-if
AngularJS表格神器“ui-grid”的应用的更多相关文章
- Angularjs 表格插件的使用
对于相关的table组件可以使用:UI Grid (ng-grid),ng-table,smart table,Angular-Datatables,tablelite,kendo-ui中的grid. ...
- NGUI UI Grid, two column
NGUI UI Grid, two column, set Arrangement Horizontal, Column Limit 2.
- Kendo Web UI Grid添加一个html控件如(checkbox,button)
在Kendo Web UI Grid增加一个控件如效果图: <div id="grid1"></div><script> $("#gr ...
- kendo ui grid选中行事件,获取combobox选择的值
背景: 以前用 telerik ui做的grid现在又要换成kendo ui,不过说句实话kendo ui真的比telerik好多,可以说超级升级改头换面.当然用的mvc的辅助方法,以前的teleri ...
- 基于AngularJS的Onsen UI --Onsen UI学习笔记
AngularJS与Onsen UI的结合,Onsen UI应用程序实际上是一个AngularJS 1应用程序. <!doctype html><html lang="en ...
- 【09】AngularJS 表格
AngularJS 表格 ng-repeat 指令可以完美的显示表格. 在表格中显示数据 使用 angular 显示表格是非常简单的: <div ng-app="myApp" ...
- Kendo UI Grid 使用总结
Kendo UI Grid控件的功能强大,这里将常用的一些功能总结一下. Kendo UI Grid 固定列 在使用Gird控件显示数据时,如果数据列过多,会出现横向滚动条,很多情况下,我们希望某些列 ...
- Kendo UI Grid 批量编辑使用总结
项目中使用Kendo UI Grid控件实现批量编辑,现在将用到的功能总结一下. 批量编辑基本设置 Kendo Grid的设置方法如下: $("#grid").kendoGrid( ...
- kendo ui - grid 数据表格系列
kendo-ui 官网:https://www.telerik.com/documentation 初始化 grid: 引入文件: <link rel="stylesheet" ...
随机推荐
- Django-Model操作数据库(增删改查、连表结构)
一.数据库操作 1.创建model表 基本结构 1 2 3 4 5 6 from django.db import models class userinfo(models.M ...
- 说几个python与c区别的地方以及静态变量,全局变量的区别
一: python代码: a = 2 def b(): print a a = 4 print a b() 在b函数中,有a=4这样的代码,说明a是函数b内部的局部变量,而不是外部的那个值为2的全局变 ...
- weblogic对JSP预编译、weblogic读取JSP编译后的class文件、ant中weblogic.jspc预编译JSP
我们都知道在weblogic中JSP是每次第一次访问的时候才会编译,这就造成第一次访问某个JSP的时候性能下降,有时候我们也希望JSP被编译成class然后打包在jar中实现隐藏JSP的功能,下面介绍 ...
- 一套oracle的练习题
create table student( sno varchar2(10) primary key, sname varchar2(20), sage number(2), ssex varchar ...
- Levmar 配置
Levmar配置 原文有些错误,在我的博客里已经改好了:http://blog.sina.com.cn/s/blog_45b747f70101he1t.html 如果6或者7自由度机器人的运动学逆解无 ...
- Difference between plt.draw() and plt.show() in matplotlib
Difference between plt.draw() and plt.show() in matplotlib down voteaccepted plt.show() will display ...
- 三 、 Multivariance Linear Regssion练习(转载)
转载:http://www.cnblogs.com/tornadomeet/archive/2013/03/15/2962116.html 前言: 本文主要是来练习多变量线性回归问题(其实本文也就3个 ...
- Bootstrap3.0学习第一轮(入门)
详情请查看 http://aehyok.com/Blog/Detail/7.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...
- 【转】C++ map的基本操作和使用
1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响较小,除了那个操作节点,对其它的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 2.map的功能 自 ...
- 005_nginx414_nginx 414 Request-URI Too Large
一.开发请求一个非常长的请求参数 https://jiaju.jyall.me/backend/dish/getSales/?dishId=167271&dishId=166975&d ...