easyUI--datagrid

1.       数据表格:DataGrid

a)       模版:

// 加载datagrid
   $("#datagridModel").datagrid({
      url : '/personnel/customerAction!datagrid.action',
      title : 'datagridModel',
      iconCls : 'icon-help',
      pagination : true,
      fit : true,
      fitColumns : true,//缩放时是否会自动压缩width显示
      nowrap : false,//字数多了是否会自动再补行全显示
      border : false,//边框
      pageSize : 2,//初始化时每页显示多少条,必须在pageList也指定
   pageList : [ 2, 10, 20, 50, 100 ],//可选每页显示多少条
idField : 'cid', //该列是唯一列,避免翻页之后还选中上一页的数据
sortName : 'cid',
sortOrder : 'desc',
frozenColumns : [ [ { // 当有水平滚动条时,该列始终可见
        title : '编号',
        field :'cid',
        width :150,
        sortable: true,
        checkbox: true
}, {
        title : '姓名',
        field :'cname',
        width :150,
        sortable: true
} ] ],
columns : [ [ {
        title : '性别',
        field : 'csex',
        width :150,
        sortable: true
}, {
        title : '联系电话',
        field :'cphone',
        width :150
}, {
        title : '地址',
        field :'caddress',
        width :150
}, {
        title : '最后操作时间',
        field :'ctime',
        width :250,
        sortable: true
}, {
        title : '最后操作用户',
        field :'tusername',
        width :250,
        sortable: true
}, {
        title : '是否可用',
        field :'cstatus',
        width :250,
        formatter: function(value, row, index) {
               return"可用";
        }
} ] ]
});


b)       后台返回数据格式


c)        日期组合框 - DateBox, 时间组合框– DateTimeBox

 最好别让用户自己输入,加上: editable="false"

d)        Reload和Load的区别

                        i.             Reload刷新的是当前页面,与pagination里面的刷新按钮一样

                      ii.             Load刷新的是所有的信息,并且会返回到第一页

e)        行级增删改

                        i.             流程:

1.        在开始编辑需要对表格字段进行处理,加上约束,字段类型和约束

2.        在toolbar上加上添加和保存俩按钮

3.        在添加按钮事件上操作:添加一行,并且开起行编辑

4.        在保存按钮事件上操作:验证数据,并且保存

                      ii.             常用方法

1.        在最前面插入一行: 可在row参数中添加默认参数row : {cid : sy.UUID()}

centerDatagridModel.datagrid('insertRow',{index : 0, row : {} });

2.        开始编辑第一行:

centerDatagridModel.datagrid('beginEdit',0);

3.        结束编辑第一行:

centerDatagridModel.datagrid('endEdit',0);

4.        取消编辑第一行

centerDatagridModel.datagrid('cancelEdit',0);

5.        删除第一行

centerDatagridModel.datagrid('deleteRow',0);

6.        回滚当前编辑

centerDatagridModel.datagrid('rejectChanges');

7.        提交当前行, 一般是在异步处理完成服务器数据成功后执行该方法

centerDatagridModel.datagrid('acceptChanges');

8.        获取所有选择到的列

centerDatagridModel.datagrid('getSelections');

9.        获取第一个被选择的行记录或null。

centerDatagridModel.datagrid(' getSelected');

10.    获取某一row所在的index

centerDatagridModel.datagrid('getRowIndex',selectrows[0]);

11.    取到新增, 修改的行: 一般都是放在放在onAfterEdit事件之后

centerDatagridModel.datagrid('getChanges','inserted');

centerDatagridModel.datagrid('getChanges','updated');

12.    事件: onAfterEdit, 编辑成功之后执行事件

13.    事件:onDblClickRow, 双击事件,可在双击之后开起编辑模式

 

{
title : '姓名',
field : 'cname'
field : 'cname'
editor: {
         type : "validatebox",
         options : {
                   required : true
         }
}
}
                     iv.             扩展datatimebox
$.extend($.fn.datagrid.defaults.editors,{
datatimebox: {
         init : function(container, options) {
                   var input = $('<input/>').appendTo(container);
                   options.editable = false;
                   input.datetimebox(options);
                   return input;
         },
         getValue : function(target) {
                   return$(target).datetimebox("getValue");
         },
         setValue : function(target, value) {
                   $(target).datetimebox("setValue",value);
         },
         resize : function(target, width) {
                   $(target).datetimebox("resize",width);
         },
         destroy : function(target) {
                   $(target).datetimebox("destroy");
         }
}
});



本人测试例子

layout.html, 包含两个页面:layout-center.html, layout-west.html

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>jQuery EasyUI demo</title>

		<link rel="stylesheet" href="../jquery-easyui-1.3.1/themes/icon.css" type="text/css"></link>
		<link rel="stylesheet" href="../jquery-easyui-1.3.1/themes/default/easyui.css" type="text/css"></link>
		<script type="text/javascript" src="../jquery-easyui-1.3.1/jquery-1.8.0.min.js"></script>
		<script type="text/javascript" src="../jquery-easyui-1.3.1/jquery.easyui.min.js"></script>
		<script type="text/javascript" src="../jquery-easyui-1.3.1/locale/easyui-lang-zh_CN.js"></script>
		<script type="text/javascript" src="../syUtil.js"></script>
	</head>
	<script type="text/javascript">
	$(function() {
		// 扩展$.fn.datagrid.defaults.editors : datatimebox
		$.extend($.fn.datagrid.defaults.editors, {
			datatimebox : {
				init : function(container, options) {
					var input = $('<input />').appendTo(container);
					options.editable = false;
					input.datetimebox(options);
					return input;
				},
				getValue : function(target) {
					return $(target).datetimebox("getValue");
				},
				setValue : function(target, value) {
					$(target).datetimebox("setValue", value);
				},
				resize : function(target, width) {
					$(target).datetimebox("resize", width);
				},
				destroy : function(target) {
					$(target).datetimebox("destroy");
				}
			}
		});

		var centerPanel;
		var centerDatagridModel;
		var centerTabs;
		var westPanel;
		var westTree;
		var centerForm;
		var editRow;

		// 属性的设置方法
		$("#bodyPanel").layout({
			fit : true
		});

		// 事件的执行方法
		centerPanel = $("#bodyPanel").layout("panel", "center");
		console.info(centerPanel);
		centerPanel.panel({
			onLoad : function() {
				// layou-center页面对象操作
				centerTabs = $('#centerTabs').tabs({
					border : false,
					onSelect : function(title, index) {
						console.info(title + "-" + index);

						if (index == "0") {
							// 加载datagrid
							centerDatagridModel = $("#centerDatagridModel").datagrid({
								url : '/personnel/customerAction!datagrid.action',
								title : 'datagridModel',
								iconCls : 'icon-help',
								pagination : true,
								fit : true,
								fitColumns : true,
								nowrap : false,
								border : false,
								pageSize : 2,
								pageList : [ 2, 10, 20, 50, 100 ],
								idField : 'cid', //该列是唯一列,避免翻页之后还选中上一页的数据
								sortName : 'cid',
								sortOrder : 'desc',

								frozenColumns : [ [ { // 当有水平滚动条时,该列始终可见
									title : '编号',
									field : 'cid',
									width : 150,
									sortable : true,
									checkbox : true
								}, {
									title : '姓名',
									field : 'cname',
									width : 150,
									sortable : true,
									editor : {
										type : "validatebox",
										options : {
											required : true
										}
									}
								} ] ],
								columns : [ [ {
									title : '性别',
									field : 'csex',
									width : 150,
									sortable : true,
									editor : {
										type : "combobox",
										options : {
											required : true,
											valueField : 'label',
											textField : 'value',
											data : [ {
												label : '男',
												value : '男'
											}, {
												label : '女',
												value : '女'
											} ],
											editable : false
										}
									}
								}, {
									title : '联系电话',
									field : 'cphone',
									width : 150,
									editor : {
										type : "validatebox",
										options : {
											required : true,
											validType : "phone"
										}
									}
								}, {
									title : '地址',
									field : 'caddress',
									width : 150,
									editor : {
										type : "validatebox",
										options : {
											required : true
										}
									}
								}, {
									title : '最后操作时间',
									field : 'ctime',
									width : 250,
									sortable : true,
									editor : {
										type : "datatimebox",
										options : {
											required : true,
											editable : false
										}
									}
								}, {
									title : '最后操作用户',
									field : 'tusername',
									width : 250,
									sortable : true,
									editor : {
										type : "validatebox",
										options : {
											required : true
										}
									}
								}, {
									title : '是否可用',
									field : 'cstatus',
									width : 250,
									formatter : function(value, row, index) {
										return "可用";
									}
								} ] ],
								toolbar : [ {
									text : '添加',
									iconCls : 'icon-add',
									handler : function() {
										console.info("add");
										// 一次编辑一条
										if (editRow == undefined) {
											// insertRow
											centerDatagridModel.datagrid('insertRow', {
												index : 0,
												row : {
													cid : sy.UUID()
												}
											});
											centerDatagridModel.datagrid('beginEdit', 0);
											editRow = centerDatagridModel.datagrid('getRows')[0];
										}
									}
								}, '-', {
									text : '编辑',
									iconCls : 'icon-edit',
									handler : function() {
										console.info("edit");

										var rowIndex;
										if (editRow != undefined) {
											rowIndex = centerDatagridModel.datagrid('getRowIndex', editRow);
											if (centerDatagridModel.datagrid('validateRow', rowIndex)) {
												centerDatagridModel.datagrid('endEdit', rowIndex);
												centerDatagridModel.datagrid('acceptChanges'); // 提交数据
												editRow = undefined;
											} else {
												return;
											}
										}

										var selectrows = centerDatagridModel.datagrid('getSelections');
										if (selectrows.length == 0) {
											console.info("sorry, 还未选择编辑的行");
										} else if (selectrows.length > 1) {
											console.info("sorry, 一次只能编辑一行");
										} else {
											rowIndex = centerDatagridModel.datagrid('getRowIndex', selectrows[0]);
											centerDatagridModel.datagrid('beginEdit', rowIndex);
											editRow = selectrows[0];
										}
									}
								}, '-', {
									text : '删除',
									iconCls : 'icon-remove',
									handler : function() {
										console.info("remove");

										var selectrows = centerDatagridModel.datagrid('getSelections');
										if (selectrows.length == 0) {
											console.info("sorry, 还未选择编辑的行");
										} else {
											$.messager.confirm('提示', 'Are you sure you want to delete all record?', function(r) {
												if (r) {
													// 获取所有的ID传入后台
													var ids = [];
													for ( var x = 0; x < selectrows.length; x++) {
														ids.push(selectrows[x].cid);

														rowIndex = centerDatagridModel.datagrid('getRowIndex', selectrows[x]);
														console.info(rowIndex);
														centerDatagridModel.datagrid('deleteRow', rowIndex);
														x--;
													}
													console.info(ids.join(','));
													editRow = undefined;
												}
											});
										}
									}
								}, '-', {
									text : '保存',
									iconCls : 'icon-save',
									handler : function() {
										console.info("save");
										if (editRow != undefined) {
											var rowIndex = centerDatagridModel.datagrid('getRowIndex', editRow);
											if (centerDatagridModel.datagrid('validateRow', rowIndex)) {
												centerDatagridModel.datagrid('endEdit', rowIndex);
											}
										}
									}
								}, '-', {
									text : '取消编辑',
									iconCls : 'icon-cancel',
									handler : function() {
										console.info("cancel");
										centerDatagridModel.datagrid('rejectChanges');
										editRow = undefined;
									}
								} ],
								onAfterEdit : function(rowIndex, rowData, changes) { //编辑成功之后执行异步保存工作
									console.info(rowData);
									// 获取不同的操作方式inserted,deleted,updated: 更改,添加,删除
									var insertedRow = centerDatagridModel.datagrid('getChanges', 'inserted');
									var updatedRow = centerDatagridModel.datagrid('getChanges', 'updated');

									var url = "";
									if (insertedRow.length > 0) {
										url = "/personnel/customerAction!add.action";
									} else if (updatedRow.length > 0) {
										url = "/personnel/customerAction!edit.action";
									}

									// 异步请求
									$.ajax({
										type : "POST",
										url : url,
										data : rowData,
										dataType : "json",
										success : function(msg) {
											$.messager.progress("close");
											console.info("Success Saved: " + msg.msg);
											centerDatagridModel.datagrid('acceptChanges'); // 提交数据
										}
									});

								},
								onDblClickRow : function(rowIndex, rowData) { // 双击事件
									console.info("onDblClickRow");
									var rowIndex1;
									if (editRow != undefined) {
										rowIndex1 = centerDatagridModel.datagrid('getRowIndex', editRow);
										if (centerDatagridModel.datagrid('validateRow', rowIndex1)) {
											console.info("validateRow true");
											centerDatagridModel.datagrid('endEdit', rowIndex1);
											centerDatagridModel.datagrid('acceptChanges'); // 提交数据
											editRow = undefined;
										} else {
											console.info("validateRow false");
											return;
										}
									}

									centerDatagridModel.datagrid('beginEdit', rowIndex);
									editRow = this;
								}
							});
						}
					}
				});
			}
		});

		// 事件的执行方法
		westPanel = $("#bodyPanel").layout("panel", "west");
		console.info(westPanel);
		westPanel.panel({
			onLoad : function() {
				westTree = $('#westTree').tree({
					data : [ {
						text : 'Item1',
						attributes : {
							"url" : "/demo/book/abc",
							"price" : 100
						}
					}, {
						text : 'Item2',
						attributes : {
							"url" : "/demo/book/abc",
							"price" : 100
						}
					} ],
					onClick : function(node) {
						if (node.text == "Item1") {
							console.info(node);
							centerTabs.tabs('add', {
								title : 'Tab2',
								content : 'Tab Body',
								closable : true,
								tools : [ {
									iconCls : 'icon-mini-refresh',
									handler : function() {
										alert('refresh');
									}
								} ]
							});
						}
					}
				});
			}
		});
	});

	function searchCustomer() {

		$("#centerDatagridModel").datagrid("load", {
			cname : $("#centerForm input[name='cname']").val(),
			ctime : $("#centerForm input[name='ctime']").val()
		});
	}
</script>
	<body>
		<div id="bodyPanel" class="easyui-layout">
			<div data-options="region:'north',title:'North Title'" style="height: 10px;"></div>
			<div data-options="region:'east',iconCls:'icon-reload',title:'East',split:true" style="width: 50px;"></div>
			<div data-options="region:'west',title:'West',split:true,href:'layout-west.html'" style="width: 200px;"></div>
			<div data-options="region:'center',title:'center title',href:'layout-center.html'"
				style="padding: 5px; background: #eee;"></div>
		</div>
	</body>
</html>

layout-center.html

<div id="centerTabs" class="easyui-tabs" fit="true">
    <div title="Tab1" style="padding: 20px; display: block;">
        <div class="easyui-layout" fit="true">
            <div data-options="region:'north',title:'过滤'" style="height: 60px;">
                <form id="centerForm" method="post">
                    <table style="width: 100%; height: 100%; overflow: hidden;">
                        <tr>
                            <td>
                                姓名:
                            </td>
                            <td>
                                <input name="cname" class="easyui-validatebox" />
                            </td>
                            <td>
                                最后操作时间:
                            </td>
                            <td>
                                <input name="ctime" type="text" class="easyui-datebox" editable="false"></input>
                            </td>
                            <td>
                                <a id="btn" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'"
                                    οnclick="searchCustomer();">searchCustomer</a>
                            </td>
                        </tr>
                    </table>
                </form>
            </div>
            <div data-options="region:'center',title:'用户列表'" style="padding: 5px; background: #eee;">
                <table id="centerDatagridModel">
                </table>
            </div>
        </div>
    </div>
    <div title="Tab2" data-options="closable:true" style="overflow: auto; padding: 20px; display: none;">
        tab2
    </div>
</div>

layout-west.html

<ul id="westTree"></ul>  










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值