一.前端框架使用的easyui框架

二.后端使用的是jfinal

三.效果图

四.html代码

<div id="table_tree" class="easyui-panel" id="div_panel" style="width:550px;height:350px;padding-top:5px;overflow:auto;" data-options="border:false">
<table class="easyui-treegrid" id="dg"
data-options="border:false">
<thead>
<tr>
<th data-options="field:'name',formatter:checkShow" width="280">
<font class="my-datagrid-header">资产名称</font>
</th>
<th data-options="field:'targetName',editor:{type:'textbox',options:{required:true,validType:'length[1,30]'}}" width="280">
<font class="my-datagrid-header">创建的目标资产名称</font>
</th>
</tr>
</thead>
</table>
</div>
<script type="text/javascript">
function checkShow(value,rowData,rowIndex){
if(rowData.parent == Globals.Prop.treeRoot){
return "<input name='tableCheck' type='checkbox' value='"+rowData.id+"'>" + rowData.name;
}else if(rowData.id == Globals.Prop.treeRoot){
return "<input name='tableCheckAll' type='checkbox' value='"+rowData.id+"'>" + rowData.name;
}else{
return rowData.name;
}
}
注意:editor:{type:'textbox',options:{required:true,validType:'length[1,30]'}}表示targerName验证规则,长度不能超过30个字符

 五.js代码

var createTable = {};
createTable.editIndex = undefined;//编辑index
//渲染源链接表和字段资产信息(treegrid)
createTable.two_tableTree = function(data){
createTable.dg = $("#dg");
createTable.dg.treegrid({
idField: 'id',
treeField: 'name',
singleSelect: false
});
var gridProp = {
data:data,
width:'550px',
height:'320px',
pagination:false,//显示分页
loadFilter: function(data){
return data.pageRow;
},
onBeforeExpand: function(row){
//点击表名时,加载字段信息 如果row.state = open 说明字段信息已从服务器获取到,不会重复加载数据
if(row.parent == 'ROOT'){
createTable.dg.treegrid('options').url = Globals.Prop.contextPath + "/meta/import/findColumn.bs";
}
return true;
},
onClickCell:function(field,row){
//点击触发编辑表格
createTable.onClickCell(row.id, field);
},
onLoadSuccess:function(data){
//折叠 unselectAll
createTable.dg.treegrid('unselectAll');
//createTable.dg.treegrid('collapseAll',Globals.Prop.treeRoot);
//createTable.dg.treegrid('expand',Globals.Prop.treeRoot);
checkAll();
}
};
createTable.dg.treegrid(gridProp);
//当treegrid height:0px时,处理
$(".datagrid").find(".datagrid-view2 .datagrid-header").css("height","25px");
$(".datagrid").find(".datagrid-view2 .datagrid-htable").css("height","25px");
$(".datagrid").find(".datagrid-view").css("height","330px");
$("#table_tree").find(".datagrid-body").css("overflow-x","auto"); //全选或反选
function checkAll(){
$("input[name='tableCheckAll']").click(function(){
var check = $(this).is(":checked");
if(!check){
createTable.dg.treegrid('unselectAll');
}
$("input[name='tableCheck']").each(function(){
if(check){
createTable.dg.treegrid('select',$(this).val());
}
$(this).prop("checked",check);
})
})
}
} createTable.endEditing = function(){
if (createTable.editIndex == undefined){return true};
if (createTable.dg.datagrid('validateRow', createTable.editIndex)){
createTable.dg.datagrid('endEdit', createTable.editIndex);
createTable.editIndex = undefined;
return true;
} else {
return false;
}
} /**
* index:行位置
* field:字段名称
* 当选中一行,某字段时触发
*/
createTable.onClickCell = function(index, field){
if (createTable.editIndex != index){
if (createTable.endEditing()){
if(field == "name" || index == "root") return;
createTable.dg.treegrid('selectRow', index)
.treegrid('beginEdit', index);
var ed = createTable.dg.treegrid('getEditor',{index:index,field:field});
if (ed){
($(ed.target).data('textbox') ? $(ed.target).textbox('textbox') : $(ed.target)).focus();
}
createTable.editIndex = index;
} else {
if (createTable.editIndex == undefined){return};
createTable.dg.treegrid('selectRow', createTable.editIndex);
}
}
}

六:后台实现
     1> sql

select 'ROOT' id, '' parent,'test' name,'test' targetName, 'icon-userSchema' iconCls,'open' state,'' label from dual
union all
select t.id, 'ROOT' parent, t.name, t.name targetName, 'icon-table' iconCls,'closed' state,label from dmm_meta_table t where t.schema = ''

2>实现方法

List<Record> records = api.find(sql());
List<TableTree> tables = BsModelPropAdapter.adapterList(records, TableTree.class);

3>model

public class TableTree implements Serializable {

    private static final long serialVersionUID = 1L;

    private String id = ID.get();

    private String name;

    private String targetName;

    private String parent;

    private String state;

    private String label;

    public String getLabel() {
return label;
} public void setLabel(String label) {
this.label = label;
} public String getState() {
return state;
} public void setState(String state) {
this.state = state;
} /* easyui TreeGrid 匹配字段 */
@JSONField(name="_parentId")
private String _parentId; private String iconCls; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getParent() {
return parent;
} public void setParent(String parent) {
this.parent = parent;
} /* 返回Parent */
public String get_parentId() {
return parent;
} public void set_parentId(String _parentId) {
this._parentId = _parentId;
}
public String getTargetName() {
return targetName;
} public void setTargetName(String targetName) {
this.targetName = targetName;
} public String getIconCls() {
return iconCls;
} public void setIconCls(String iconCls) {
this.iconCls = iconCls;
} }

实现Easyui 可编辑表格的更多相关文章

  1. JavaScript- jquery easyui 可编辑表格插件 easyui.editgrid

    最近项目前端使用 jquery+easyui来做,用了几个月,觉得easyui是一个很不错的开源前端UI框架, 虽然偶尔会遇到一些小问题,但是凭借多年前端开发的实力积累 都一一解决了,其中比较典型的就 ...

  2. easyui,datagrid表格,行内可编辑

    最近用到easyui,需要表格内编辑,但是我同一个页面有多个表格,把官方的代码修改了一下,如下: HTML代码 <table id="dg" class="easy ...

  3. EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他

    原创 : EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他 转载,请注明出处哦!谢谢! 原创 : EasyUI datagrid 明细表格中编辑框 事件绑 ...

  4. Easyui 编辑表格行删除

    1.问题描述 easyui 编辑表格新增一条数据后,删除最后一行删除不了,原因是没有提交数据acceptChanges. 源码中deleteRow方法,根据坐标获取行html,方法为opts.find ...

  5. easyui datagrid可编辑表格使用经验分享

    文章目录 1相关接口方法 2列属性formatter 3编辑器类型 3.1基于my97的编辑器 3.2简单的密码编辑器 3.3动态增加/删除编辑器 4字段的级联操作 4.1combobox的级联操作 ...

  6. EasyUI/TopJUI可编辑表格的列根据返回数据判断是使用 combobox 还是 numberbox

    这两天研究了一下topjui的可编辑表格edatagrid,想在每一列的后面根据返回的数据判断是使用 combobox 还是 numberbox,期间遇到了一些坑,下面实现代码,需要的朋友可以参考一下 ...

  7. jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、

    脚 本 之 家 www.jb51.net 脚本云 专题 素材下载 电子书 软件下载 源码下载 服务器常用软件 a5交易 首页 网页制作 脚本专栏 脚本下载 网络编程 数据库 CMS教程 电子书籍 平面 ...

  8. [HTML]HTML5实现可编辑表格

    HTML5实现的简单的可编辑表格 [HTML]代码 <!DOCTYPE html > <html > <head> <meta charset="u ...

  9. Jqgrid入门-使用模态对话框编辑表格数据(三)

            Jqgrid是一个强大的表格插件,它提供了多种方式来编辑数据.这三种方式分别是: Cell Editing——只允许修改某一个单元格内容 Inline Editing——允许在jqGr ...

随机推荐

  1. span中内容随着数字长度的添加而增大

    场景:导航条中数据,当数据量不大时.仅仅会显示几页,数字仅仅有1,2.3,4..,数字写在span标签中, 则span不须要多宽.设置固定宽度就能够,但当数据量很大的.比如:日志管理--有增 删 改就 ...

  2. .NET破解之爱奇迪(二)

    爱奇迪的其他系统软件我不感兴趣,但这个Database2Sharp看起来好像很有用的. 官网介绍: 一个简单点击几次鼠标就能完成一周代码量的代码生成工具,效率惊人.友好体贴,真正的开发好伴侣,提供了对 ...

  3. 铁通网络没有一个真实的公网IP,NAT转换能不能解决?

    铁通网络没有一个真实的公网IP,NAT转换能不能解决?     我的是铁通宽带,现在想用自己的机子做一个动态主机,可是因为铁通垃圾网络的NAT转发问题,使用cn99qdns手动更新动态域名IP后公网能 ...

  4. Drupal 7 driver for SQL Server and SQL Azure

    Drupal 7 driver for Microsoft SQL Server database engines. It supports both SQL Server (version 2008 ...

  5. [译]聊聊C#中的泛型的使用(新手勿入) Seaching TreeVIew WPF 可编辑树Ztree的使用(包括对后台数据库的增删改查) 字段和属性的区别 C# 遍历Dictionary并修改其中的Value 学习笔记——异步 程序员常说的「哈希表」是个什么鬼?

    [译]聊聊C#中的泛型的使用(新手勿入)   写在前面 今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发 ...

  6. HttpOperater-模拟HTTP操作类

    using System; using System.IO; using System.Linq; using System.Net; using System.Text; using System. ...

  7. 父级和 子集 controller 之间的通讯

    在同个 angular.js 应用的控制器之间进行通信可以有很多种不同的方式,本文主要讲两种: 基于scope继承的方式 基于event传播的方式 基于scope继承的方式 最简单的让控制器之间进行通 ...

  8. atitit. 研发管理---如何根据自己的特挑选 产业、行业、职业、岗位与自己发展的关系

    atitit. 研发管理---如何根据自己的特挑选 产业.行业.职业.岗位与自己发展的关系 1. 产业及分类 1 2. 二.行业 2 3. 职业概念- 3 4. 职业划分 3 5. 职业兴趣分类 4 ...

  9. Atitit.各种 数据类型 ( 树形结构,表形数据 ) 的结构与存储数据库 attilax 总结

    Atitit.各种  数据类型 ( 树形结构,表形数据  ) 的结构与存储数据库 attilax  总结 1. 数据结构( 树形结构,表形数据,对象结构 ) 1 2. 编程语言中对应的数据结构 jav ...

  10. sqlzoo练习答案--SUM and COUNT

    World Country Profile: Aggregate functions This tutorial is about aggregate functions such as COUNT, ...