在实际应用中可能会碰到不同的需求,比如会根据每行不同的参数或属性设置来设置同列不同的editor类型,这时原有的例子就显的有点太过简单,不能实现我们的需求,现在应用我在项目中的操作为例,显示下实现同列不同操作的情况:(在这,我把例子的情况完全整合到了js里面配置实现,如有习惯于js实现方式的也可参考)

html:

<table id="comTypeAndPropertyTree"></table>//个人觉得这样更显的页面清晰,所有的配置都放到js里实现

js:

var types = [
{typeId:0,typeName:'Normal'},
{typeId:1,typeName:'URL'},
{typeId:2,typeName:'Symbol'}
];

$(function(){
var lastIndex;
$('#comTypeAndPropertyTree').treegrid({
title:'产品库配置',
height:550,
rownumbers: true,
animate:true,
url:'getComTypeAndPropertyTreeRoot.action',
idField:'id',//id=productId_propId_largetypeId_midlletypeId_comtypeId;
treeField:'name',
frozenColumns:[[
{title:'名称',field:'name',width:300,
formatter:function(value){
return '<span style="color:red">'+value+'</span>';
}
}
]],
columns:[[
{title:'library',field:'library',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
formatter:function(value,row){
if(!row.leaf){
if(value==1){
return '<img src="data:images/checkbox_checked.jpg"/>';
}else{
return '<img src="data:images/checkbox_unchecked.jpg"/>';
}
}else{
return '';
}
}},
{title:'显示名称',field:'displayName',width:100,editor:'text'},
{title:'type',field:'type',width:100,
editor:{type:'combobox',options:{valueField:'typeId',textField:'typeName',data:types}},
formatter:function(value,row){
if(row.leaf){
for(var i=0; i<types.length; i++){
if (types[i].typeId == value) return types[i].typeName;
}
return types[0].typeName;
}else{
return '';
}
}
},
{title:'Expose',field:'expose',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
formatter:function(value,row){
if(row.leaf){
if(value==1){
return '<img src="data:images/checkbox_checked.jpg"/>';
}else{
return '<img src="data:images/checkbox_unchecked.jpg"/>';
}
}else{
return '';
}
}},
{title:'Annotate',field:'annotate',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
formatter:function(value,row){
if(row.leaf){
if(value==1){
return '<img src="data:images/checkbox_checked.jpg"/>';
}else{
return '<img src="data:images/checkbox_unchecked.jpg"/>';
}
}else{
return '';
}
}
},
{title:'Load',field:'load',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
formatter:function(value,row){
if(row.leaf){
if(value==1){
return '<img src="data:images/checkbox_checked.jpg"/>';
}else{
return '<img src="data:images/checkbox_unchecked.jpg"/>';
}
}else{
return '';
}
}
},
{title:'Name Available',field:'nameAvailable',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
formatter:function(value,row){
if(row.leaf){
if(value==1){
return '<img src="data:images/checkbox_checked.jpg"/>';
}else{
return '<img src="data:images/checkbox_unchecked.jpg"/>';
}
}else{
return '';
}
}
},
{title:'Value Available',field:'valueAvailable',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
formatter:function(value,row){
if(row.leaf){
if(value==1){
return '<img src="data:images/checkbox_checked.jpg"/>';
}else{
return '<img src="data:images/checkbox_unchecked.jpg"/>';
}
}else{
return '';
}
}
},
{title:'Export As OAT',field:'exportAsOAT',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
formatter:function(value,row){
if(row.leaf){
if(value==1){
return '<img src="data:images/checkbox_checked.jpg"/>';
}else{
return '<img src="data:images/checkbox_unchecked.jpg"/>';
}
}else{
return '';
}
}
},
{title:'Required',field:'required',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
formatter:function(value,row){
if(row.leaf){
if(value==1){
return '<img src="data:images/checkbox_checked.jpg"/>';
}else{
return '<img src="data:images/checkbox_unchecked.jpg"/>';
}
}else{
return '';
}
}
},
{title:'Units',field:'units',width:100,editor:'text',
formatter:function(value,row){
if(row.leaf){
return value;
}else{
return '';
}
}},
{title:'VM',field:'vm',width:100,editor:'text',
formatter:function(value,row){
if(row.leaf){
return value;
}else{
return '';
}
}}
]]
,onClickRow:function(row){//运用单击事件实现一行的编辑结束,在该事件触发前会先执行onAfterEdit事件
var rowIndex = row.id;
if (lastIndex != rowIndex){
$('#comTypeAndPropertyTree').treegrid('endEdit', lastIndex);
}
}
,onDblClickRow:function(row){//运用双击事件实现对一行的编辑
var rowIndex = row.id;
if (lastIndex != rowIndex){
$('#comTypeAndPropertyTree').treegrid('endEdit', lastIndex);
$('#comTypeAndPropertyTree').treegrid('beginEdit', rowIndex);
lastIndex = rowIndex;
}
}
,onBeforeEdit:function(row){
beforEditRow(row);//这里是功能实现的主要步骤和代码
}
,onAfterEdit:function(row,changes){
var rowId = row.id;
$.ajax({
url:"saveProductConfig.action" ,
data: row,
success: function(text){
$.messager.alert('提示信息',text,'info');
}
});
}
});
});
function beforEditRow(row){//这个是核心的,很有用的,如有同样需求的话可以借鉴实现
var libraryCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','library');
var exposeCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','expose');
var annotateCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','annotate');
var loadCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','load');
var nameAvailableCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','nameAvailable');
var valueAvailableCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','valueAvailable');
var exportAsOATCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','exportAsOAT');
var requiredCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','required');

var unitsCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','units');
var vmCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','vm');

var typeCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','type');

var checkboxOptionsObj = new Object();
checkboxOptionsObj.on='1';
checkboxOptionsObj.off='0';
var checkboxEditorObj = new Object();
checkboxEditorObj.type='checkbox';
checkboxEditorObj.options=checkboxOptionsObj;

var comboboxOptionsObj = new Object();
comboboxOptionsObj.valueField='typeId';
comboboxOptionsObj.textField='typeName';
comboboxOptionsObj.data=types;
var comboboxEditorObj = new Object();
comboboxEditorObj.type='combobox';
comboboxEditorObj.options=comboboxOptionsObj;
if(row.leaf){
libraryCoclum.editor=null;
exposeCoclum.editor=checkboxEditorObj;
annotateCoclum.editor=checkboxEditorObj;
loadCoclum.editor=checkboxEditorObj;
nameAvailableCoclum.editor=checkboxEditorObj;
valueAvailableCoclum.editor=checkboxEditorObj;
exportAsOATCoclum.editor=checkboxEditorObj;
requiredCoclum.editor=checkboxEditorObj;

unitsCoclum.editor='text';
vmCoclum.editor='text';

typeCoclum.editor=comboboxEditorObj;
}else{
libraryCoclum.editor=checkboxEditorObj;
exposeCoclum.editor=null;
annotateCoclum.editor=null;
loadCoclum.editor=null;
nameAvailableCoclum.editor=null;
valueAvailableCoclum.editor=null;
exportAsOATCoclum.editor=null;
requiredCoclum.editor=null;

unitsCoclum.editor=null;
vmCoclum.editor=null;

typeCoclum.editor=null;
}
}

实现效果图:实现流程:onDblClickRow --( onBeforeEdit -- onAfterEdit) -- onClickRow,操作上只需要双击和单击两个事件来完成操作,而另两个事件是在中间自动实现完成。

easyui grid单元格类型的更多相关文章

  1. 取得grid单元格里刚输入的文本,未保存的文本

    取得grid单元格里刚输入的文本内容,未保存的文本,正在输入的值,正在编辑的值,编辑框 dbgrid->DataSource->DataSet->UpdateRecord(); pr ...

  2. POI 单元格类型CellType

    1.单元格类型 单元格的内容决定了单元格的类型,POI中定义的7种单元格类型: 2.示例 cell_0.setCellType(CellType.STRING);//字符串 日期数据对应的单元格类型是 ...

  3. ExtJs4学习(十)Grid单元格换色和行换色的方法

    Grid单元格换色 { text:'类别', dataIndex:'type', align:'center', renderer:function(value,metaData){ console. ...

  4. EasyUI Datagrid 单元格编辑

    3:对于单元格的编辑 $('#Units').datagrid({ pageNumber: 1, //url: "@ViewBag.Domain/Paper/GetQuestionUnit& ...

  5. extjs grid 单元格 多选

    new Ext.grid.CellSelectionModel({ last : false, // 上一次选中的单元格 selections : [], // 选择区缓存 handleMouseDo ...

  6. ExtJS4.x Grid 单元格鼠标悬停提示

    //每一个列都会出现鼠标悬浮上去显示内容 /** * //适用于Extjs4.x * @class Ext.grid.GridView * @override Ext.grid.GridView * ...

  7. 点击grid单元格弹出新窗口

    实现功能:点击指定单元格后会弹出新窗口,并且最后一行合计不会触发单元格触发函数 <script type="text/javascript"> grid.on('cel ...

  8. Extjs grid 单元格事件

    celldblclick: function (view, td, cellIndex, record, tr, rowIndex, e, eOpts) { //extjs 4.2下,有时出现,多次不 ...

  9. EasyUI datagrid单元格文本超出显示省略号,鼠标移动到单元格显示文本

    nowrap : true;  是前提 $('#×××').datagrid({ nowrap : true,//设置为true,当数据长度超出列宽时将会自动截取 }); 省略号样式: <sty ...

随机推荐

  1. C#序列化json属性名首字母变成小写的解决方案

    原文:C#序列化json属性名首字母变成小写的解决方案 //接口返回自动转小写,容易造成前后端不一致,获取不到数据,切换成转驼峰(首字母大写)如Code/Result //在ConfigureServ ...

  2. Aspnetcore下面服务器热更新与配置热加载

    原文:Aspnetcore下面服务器热更新与配置热加载 Asp.net的热更新方案Appdomain在aspnetcore中不被支持了 新的方案如下: 配置文件更新选项 reloadOnChange ...

  3. jsp与httpservlet的微小区别

    2015-8 jsp与httpservlet的微小区别: jsp默认支持会话,httpservlet默认不支持会话:jsp: 可以直接通过session引用httpservlet对象httpservl ...

  4. linux内核的简单介绍

    linux的版本号分为两个部分:内核(Kernel)和发行套件(distribution)版本. 内核版本是linus领导下的开发小组开发出的系统内核的版本号,而发行套件是由其他组织或者厂家将linu ...

  5. Android关于界面一定时间无操作自动跳转到指定界面的实现

    主要用到的功能,自定义一个定时器CountTimer继承CountDownTimer. public class CountTimer extends CountDownTimer { private ...

  6. SurfaceView的基本使用(转)

    转自:https://www.cnblogs.com/zhangyingai/p/7087371.html SurfaceView的基本使用   一.引入: Android提供了View来进行绘图处理 ...

  7. Linux下tree的使用介绍

    1.在ubuntu系统中默认是没有tree这个命令的,需要安装,用下面的命令就可以安装tree这个命令工具sudo apt-get install tree. 2.首先来说说使用tree这个命令,就是 ...

  8. 数据库索引原理,及MySQL索引类型(转)

    在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable( ID INT NOT NULL, username ) NOT N ...

  9. python 字符串中替换字符

    今天本来打算写个程序,替换字符串中固定的一个字符:将<全部替换成回车'\n' 于是,我写成这样 s='sdjj<ddd<denj,>' for x in s: if x=='& ...

  10. loadRunner之参数关联

    录制脚本,对用户名和密码进行参数化: Action() { web_url("WebTours", "URL=http://127.0.0.1:1080/WebTours ...