【EasyUI】——可编辑的DataGrid
利用EasyUI做的可编辑的DataGrid大致分为两种类型。一种是启动行编辑的,一种是启动单元格编辑。且不说启动编辑的效果怎样。单启动编辑这一块它就封装的非常厉害。好些功能没有办法去更改。如今项目的一个需求就是在页面上使得DataGrid能够实现这种效果,单击选中行,双击可编辑单元格,失去焦点则保存数据。在研究了整整两天之后,大致能实现。可是差失去焦点保存数据。这篇文章就简单理解一下。可启动单元格编辑的DataGrid是怎样实现的。
首先得加入EasyUI的引用:
<span style="font-family:KaiTi_GB2312;font-size:18px;"> <link href="../../Content/EasyUI/easyui.css" rel="stylesheet" type="text/css" />
<link href="../../Content/EasyUI/icon.css" rel="stylesheet" type="text/css" />
<link href="../../Content/EasyUI/demo.css" rel="stylesheet" type="text/css" />
<script src="../../Content/EasyUI/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="../../Content/EasyUI/jquery.easyui.min.js" type="text/javascript"></script></span>
其次是表格的代码:
<span style="font-family:KaiTi_GB2312;font-size:18px;"> <table id="dg" title="管理员管理查询结果" style="width: auto; height: auto"; data-options="onDblClickCell:onClickCell"> @*onDblClickCell指的是双击单元格进行编辑,假设须要单击进行编辑。就改为onClickCell*@
<thead>
<tr>
<th data-options="field:'AdminID',width:100">管理员工号</th>
<th data-options="field:'AdminName',width:100,editor:'text'">姓名</th>
<th data-options="field:'AdminPWD',width:80,align:'right',editor:{type:'numberbox',options:{precision:1}}">password</th>
<th data-options="field:'AdminLevel',width:80,align:'right',editor:'text'">权限</th>
<th data-options="field:'IsUsed',width:60,align:'center',editor:{type:'checkbox',options:{on:'P',off:''}}">是否可用</th>
</tr>
</thead>
</table></span>
最后是JS代码:
<span style="font-family:KaiTi_GB2312;font-size:18px;"><script type="text/javascript" src="/easyui/datagrid-cellediting.js"></script></span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"> <script type="text/javascript">
function initTable() {
$("#dg").datagrid({
url: "Series/QueryBy", //调用的SeriesController中的QueryBy方法
width: "100%", //宽度适应浏览器大小
fitColumns: true, //列宽自适应
idField: 'ID',
loadMsg: '正在载入用户信息...',
pagination: true, //是否分页显示
singleSelect: false, //仅仅能选中一条数据
striped: true, //行背景交换
pageSize: 10, //每一页的大小
pageNumber: 1, //当前页数
pageList: [10, 20, 30], //每一页显示的条数
queryParams: {
searchName: $("searchName").val()
},
columns: [[ //这段代码是给DataGrid列赋值。field就是每一列相应的字段名,title是每一列显示的列首
{ field: 'ck', checkbox: true, align: 'left', width: 50 },
{ field: 'ID', title: '主键', width: 50, hidden: true },
{ field: 'AdminID', title: '管理员工号', width: 50 },
{ field: 'AdminPassword', title: 'password', width: 50, hidden: true, editor: 'text' },
{ field: 'AdminName', title: '姓名', width: 50, editor: 'text' },
{ field: 'AdminLevel', title: '权限', width: 50, editor: 'text' },
{ field: 'IsUsed', title: '是否使用', width: 55, editor: 'text' }
]]
});
} $(function () {
initTable();
});
</script></span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"> <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) //有这句话则编辑是该行为选中状态,没有这句话则编辑是该行不是选中状态
$('#dg').datagrid('editCell', { index: index, field: field });
editIndex = index;
$('#datagrid-cell').blur( 'editCell',alert("adafsdf"));
}
}
</script></span>
总结
EasyUI有非常多方法都是内部封装的,比方editCell、selectRow等。根本看不出来它详细是怎样实现的。在牛腩、Jquery中。实现可编辑的表格都是自己手写一个表格。然后对表格进行操作,即编辑单元格时,插入一个文本框,编辑结束则文本框隐藏。同一时候也能使用获取焦点和失去焦点的事件。而在这里,当单击或双击单元格进行编辑时。单击或双击完了,单元格就已经失去状态了。并且单元格失去焦点的事件非常难把控。希望大神能够指导一二。
【EasyUI】——可编辑的DataGrid的更多相关文章
- 市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交
http://blog.csdn.net/cjr15233661143/article/details/19041165 市委组织部考核项目中需要录入原始数据,拿开发区的数据录入举例说明,见下图,需要 ...
- 在jQuery EasyUI中实现对DataGrid进行编辑
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- JavaScript- jquery easyui 可编辑表格插件 easyui.editgrid
最近项目前端使用 jquery+easyui来做,用了几个月,觉得easyui是一个很不错的开源前端UI框架, 虽然偶尔会遇到一些小问题,但是凭借多年前端开发的实力积累 都一一解决了,其中比较典型的就 ...
- easyui textarea回车导致datagrid 数据无法展示的问题
textarea换行 在easyui中的datagrid中使用行内编辑时textarea的换行保存到mysql数据库为\n在textarea中输入回车符 在js读取textarea中的值有\r\n然后 ...
- EasyUi–7.tab和datagrid和iframe的问题
1. 多个tab切换,第2个不显示 动态添加tab Iframe页面的方法 展开 折叠 <script type="text/javascript"> $(functi ...
- easyui 在编辑状态下,动态修改其他列值。
首先是自定义了一个方法uodateColumn更新列值 /** *自定义的修改列值方法 */ $.extend($.fn.datagrid.methods, { updateColumn: funct ...
- EasyUi–7.tab和datagrid和iframe的问题
1. 多个tab切换,第2个不显示 动态添加tab Iframe页面的方法 展开 折叠 <script type="text/javascript"> $(functi ...
- 实现Easyui 可编辑表格
一.前端框架使用的easyui框架 二.后端使用的是jfinal 三.效果图 四.html代码 <div id="table_tree" class="easyui ...
- jQuery EasyUI - 数据表格(DataGrid)
由于工作需要,项目使用前端 jQuery EasyUI - DataGrid 来控制数据表格. 1.加载相关js和css,因为easyui依赖jquery,所有加载easyui前要先加载jquery, ...
随机推荐
- flutter 实现圆角头像的2种方法
圆角头像在开发中应用太普遍了,我总结了2种实现方法,分享给大家 方法一: 使用Container组件的decoration可以实现 Container( width: 40, height: 40, ...
- CAD使用GetxDataLong读数据(com接口)
主要用到函数说明: MxDrawEntity::GetxDataLong2 读取一个Long扩展数据,详细说明如下: 参数 说明 [in] LONG lItem 该值所在位置 [out, retval ...
- Vue之x-template(2)
将html结构写在一对script标签中,设置type=“x-template” <!DOCTYPE html> <html> <head lang="en&q ...
- Ubuntu-11.10中 vim和Gedit打开html文件中文乱码问题
解决vim中文乱码方法: 打开/etc/vim/vimrc 添加代码: set fileencodings=utf-8,gb2312,gbk,gb18030 set t ...
- 第1节 yarn:14、yarn集群当中的三种调度器
yarn当中的调度器介绍: 第一种调度器:FIFO Scheduler (队列调度器) 把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源 ...
- mysql高效率随机获取n条数据写法
今天做项目遇到这个问题,本来想用mysql自带的随机函数来实现,但是想到这样做功能是实现了,但是效率真的好差!一下子想不到好的方法,就去网上找了一下,记录下来,好好研究学习一下. ID连续的情况下(注 ...
- 零基础入门学习Python(9)--了不起的分支和循环3
前言 本节继续介绍分支和循环 知识点 while循环 Python while循环与if条件分支有点类似,在条件为真的情况下,执行某一段指定的代码.不同的是只要条件为True,while循环就会一直重 ...
- SQLAlchmy模块详解
之前写过一篇博客介绍过sqlalchemy的基本用法,本篇博客主要介绍除增删改查以外SQLAlchemy对数据库表的操作,主要内容有单表操作.一对多操作.多对多操作. 一.单表操作 单表操作的增删改查 ...
- python网络编程01
1.什么是C/S架构? 客户端/服务器架构.实现服务端软件与客户端软件基于网络的通信. 2.互联网协议是什么?分别介绍五层协议中每一层的功能? 互联网协议是指用于互联网通信的规范.分为:osi七层.t ...
- 04002_HTML表单
1.表单标签 (1)表单标签:所有需要提交到服务器的表单项必须使用<form></form>括起来: (2)from标签属性 ①action:整个表单提交的位置,可以是一个页面 ...