EasyUI-Datagrid行内编辑

接上一篇,这次介绍easyUI的datagrid的行内编辑单元格的功能。

关于行内编辑,我之前写过一个demo 《jQuery:页面可编辑表格》,但是easyui 中早已经封装了行内单元格编辑的功能,我们在调用时只需要使用人家封装好的方法就行。这里就使用封装好的方法。

实现思路:

1.定义table 时写上监听单击事件的方法:onClickCell:onClickCell;

2.将需要编辑的<th>和<td>设置编辑的触发响应:editor:‘text‘。其中text只是它的一种类型,也可以写combox或设置它的数据类型等。

3.响应onclickcell和editor的方法,编写js文件(详细见代码)。

<head>
    @*引入的easyui的js和css*@
<script src="../../Content/jquery-easyui-1.3.2/jquery-1.8.0.min.js"></script>
<link href="../../Content/themes/base/minified/jquery-ui.min.css" rel="stylesheet" />
<script src="../../Content/jquery-easyui-1.3.2/jquery.easyui.min.js"></script>
<link href="../../Content/jquery-easyui-1.3.2/themes/icon.css" rel="stylesheet" />
<link href="../../Content/jquery-easyui-1.3.2/themes/default/easyui.css" rel="stylesheet" />
<script src="../../Content/jquery-easyui-1.3.2/locale/easyui-lang-zh_CN.js"></script>

    <title>企业经营管理人才类别情况统计表2 </title>
</head>

<body>
    <div>
     @* 定义table  *@
     <table id ="dg" class="easyui-datagrid" style="width: auto; height: auto;" title="企业经营管理人才类别情况统计表2" data-options="url:'/EnterpriseManagement2/FillData',fitColumns:true,singleSelect:true,pageSize:10,iconCls:'icon-edit',method:'get',onClickCell:onClickCell" sortname="CourseId" sortorder="asc" rownumbers="true" pagination="true">
      @*复杂表头的处理,合并单元格*@
		<thead>
			<tr>
				<th  rowspan="2">项目</th>
				<th  rowspan="2">合计</th>
     			<th  rowspan="2">女士</th>
				<th colspan="5">学历</th>
                <th colspan="6">年龄</th>
				<th rowspan="2">自主创业</th>
                <th  rowspan="2">再就业人数</th>
				<th  rowspan="2">拥有专利人数</th>
                <th  rowspan="2">拥有执业资格人数</th>
			</tr>
            <tr>
				<th >研究生</th>
				<th >大学本科</th>
				<th >大学专科</th>
				<th >中专</th>
				<th >高中及以下</th>
                <th >35岁以下</th>
				<th >36-40岁</th>
				<th >41-45岁</th>
				<th >46-50岁</th>
				<th >51-54岁</th>
				<th >55岁以上</th>
			</tr>
			<tr>
				<th data-options="field:'sumID',width:137,align:'center'">甲</th>
				<th data-options="field:'one',width:70,align:'center',editor:'text'">1</th>
				<th data-options="field:'two',width:70,align:'center',editor:'text'">2</th>
				<th data-options="field:'three',width:70,align:'center',editor:'text'">3</th>
				<th data-options="field:'four',width:70,align:'center',editor:'text'">4</th>
				<th data-options="field:'five',width:70,align:'center',editor:'text'">5</th>
				<th data-options="field:'six',width:70,align:'center',editor:'text'">6</th>
				<th data-options="field:'seven',width:70,align:'center',editor:'text'">7</th>
                <th data-options="field:'eight',width:70,align:'center',editor:'text'">8</th>
				<th data-options="field:'night',width:70,align:'center',editor:'text'">9</th>
				<th data-options="field:'ten',width:70,align:'center',editor:'text'">10</th>
				<th data-options="field:'eleven',width:70,align:'center',editor:'text'">11</th>
				<th data-options="field:'twelve',width:70,align:'center',editor:'text'">12</th>
				<th data-options="field:'thirteen',width:70,align:'center',editor:'text'">13</th>
				<th data-options="field:'fourteen',width:70,align:'center',editor:'text'">14</th>
				<th data-options="field:'fifteen',width:70,align:'center',editor:'text'">15</th>
                <th data-options="field:'sixteen',width:85,align:'center',editor:'text'">16</th>
				<th data-options="field:'seventeen',width:110,align:'center',editor:'text'">17</th>
			</tr>
		</thead>
	</table>

 @* 可编辑表格单机触发*@
<script type="text/javascript">
            $.extend($.fn.datagrid.methods, {
                editCell: function (jq, param) {
                    return jq.each(function () {
                        var opts = $(this).datagrid('options');
                        var fields = $(this).datagrid('getColumnFields', true).concat($(this).datagrid('getColumnFields'));
                        for (var i = 0; i < fields.length; i++) {
                            var col = $(this).datagrid('getColumnOption', fields[i]);
                            col.editor1 = col.editor;
                            if (fields[i] != param.field) {
                                col.editor = null;
                            }
                        }
                        $(this).datagrid('beginEdit', param.index);
                        for (var i = 0; i < fields.length; i++) {
                            var col = $(this).datagrid('getColumnOption', fields[i]);
                            col.editor = col.editor1;
                        }
                    });
                }
            });

            var editIndex = undefined;
            function endEditing() {
                if (editIndex == undefined) { return true }
                if ($('#dg').datagrid('validateRow', editIndex)) {
                    $('#dg').datagrid('endEdit', editIndex);
                    editIndex = undefined;
                    return true;
                } else {
                    return false;
                }
            }
            function onClickCell(index, field) {
                if (endEditing()) {
                    $('#dg').datagrid('selectRow', index)
                            .datagrid('editCell', { index: index, field: field });
                    editIndex = index;
                }
            }
</script>
    </div>

效果:

时间: 2024-10-20 05:10:16

EasyUI-Datagrid行内编辑的相关文章

Easyui datagrid行内【添加】、【编辑】、【上移】、【下移】(转自http://www.cnblogs.com/sword-successful/p/3386861.html,感谢分享)

1.首先大概说下这几个功能里用到的主要方法,行内添加数据主要是添加列的editor属性, 行内编辑主要使用beginEdit(), endEdit(),同时一个关键就是拿到当前的操作行索引editIndex. 2.撤销用到了rejectChanges(). 3.保存时使用getRows()或者getChanges(). getChanges()主要是获取添加或编辑的数据,getRows()获取到本页所有数据,主要是配合[上移][下移]方法使用. 4.在做这个功能中我使用了一个序列化前台对象组件[

datagrid行内编辑时为datetimebox

$.extend($.fn.datagrid.defaults.editors, { datetimebox: {// datetimebox就是你要自定义editor的名称 init: function (container, options) { var input = $('<input class="easyuidatetimebox">').appendTo(container); return input.datetimebox({ formatter: fun

ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑

前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 #是否,已经可以看到效果了. 对于分类ID列,通常显示的是分类名称,而不是ID值. 可是分类名称不在文章表里,在文章分类表,怎么关联格式化呢? 我们有文章分类表: 所以我们写个下拉配置: 然后在配置表头里把它配置上: 效果: PS:通过自定义语句来翻译下拉项的注意事项: 1:翻译项的数量在100以下,

Easy UI实现行内编辑

最近跟着勇霞师姐做我们高校云平台的UI系统,各个系统界面的管理.UI的系统虽然很小,但是技术内容很新鲜,这篇博文就像大家介绍一下我新接触的EasyUI的知识:开启行内编辑. 效果图如下: 一.View页面 首先,引入easyui的js文件. [html] view plaincopy <link rel="stylesheet" type="text/css" href="../../Content/jquery-easyui-1.3.2/theme

easyui datagrid的列编辑

[第十五篇]easyui datagrid的列编辑,同时插入两张表的数据进去 看图说话. 需求:插入两张表,上面的表单是第一张表的内容,下面的两个表格是第二张详情表的内容,跟第一张表的id关联 第二张表有一个列是需要用户手动填写添加的. 国际惯例,上代码 <div id="cc" class="easyui-layout" style="width: 100%; height: 380px;"> <div data-option

easyui datagrid行合并

easyui datagrid行合并 合并方法 /** * EasyUI DataGrid根据字段动态合并单元格 * 参数 tableID 要合并table的id * 参数 colList 要合并的列,用逗号分隔(例如:"name,department,office"); */ function mergeCellsByField(tableID, colList) { var ColArray = colList.split(","); var tTable =

JS组件系列——BootstrapTable 行内编辑解决方案:x-editable

前言:之前介绍bootstrapTable组件的时候有提到它的行内编辑功能,只不过为了展示功能,将此一笔带过了,罪过罪过!最近项目里面还是打算将行内编辑用起来,于是再次研究了下x-editable组件,遇到过一些坑,再此做个采坑记录吧!想要了解bootstrapTable的园友可以移步 JS组件系列——表格组件神器:bootstrap table. 本文原创地址:http://www.cnblogs.com/landeanfen/p/5821192.html 一.x-editable组件介绍 x

[转]Laravel与bootstrap-editable实现table的行内编辑

[转]Laravel与bootstrap-editable实现table的行内编辑 准备需要的库 bootstrap3.0下载 bootstrap-table下载 x-editable-develop下载 前端处理 引入库 要使用插件,首先要在blade模板(或者说html)里引入对应的js文件和css文件 bootstrap引入 <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"/>

EasyUI之dataGrid的行内编辑

1 $(function () { 2 var datagrid; //定义全局变量datagrid 3 var editRow = undefined; //定义全局变量:当前编辑的行 4 datagrid = TskupluAddPacket.datagrid({ 5 url: ThinkPHP['MODULE'] + '/Tskuplu/getPacketList', //请求的数据源 6 iconCls: 'icon-save', //图标 7 pagination: true, //显