在实际应用中可能会碰到不同的需求,比如会根据每行不同的参数或属性设置来设置同列不同的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. Solr是什么?

    么是Solr?Solr是什么? 答:Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口. Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服 ...

  2. jquery实现左侧菜单 效果

    html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...

  3. Python 获取当前文件所在路径

    记录几个os获取路径的函数 1. os.path.realpath(__file__):获取文件的绝对路径,包括文件自己的名字 2.os.path.dirname(path):获取path路径的上级路 ...

  4. 【leetcode】998. Maximum Binary Tree II

    题目如下: We are given the root node of a maximum tree: a tree where every node has a value greater than ...

  5. Vue select 绑定动态变量

    概述 根据后台的数据生成多个select,由于数据的数量不定,所以v-model绑定的变量名也不定.所以通过数据的id或者下标进行变量拼接.页面能够成功渲染,但是当进行下拉框的选值时,组件不刷新,选中 ...

  6. 高精度小数BigDecimal+二分——java

    高精度小数第一题 import java.util.*; import java.math.*; public class Main { public static void main(String ...

  7. vue2 — vuex状态管理

    一.为什么使用vuex : https://www.cnblogs.com/goloving/p/9080005.html vuex的功能 和 localstorage 的作用是一样,把数据在一个所有 ...

  8. ZROI week6

    ZROI week6 T1 用一个类似背包的东西记录答案. T2 好像直接用|操作即可. T3 瞎搞就完事了 T4 启发式合并,然而变量写错了,就没了... 总结 100 + 100 + 100 + ...

  9. linux(centos6) 常用操作

    目录 一.开机关机 1.Linux centos重启命令: 2.Linux centos关机命令: 二.图形界面与命令界面的切换 1.修改/etc/inittab文件,文件中,最后一行id:5:ini ...

  10. (9)C++ 对象和类

    一.类 1.访问控制 class student { int age;//默认私有控制 public: string name; double weight; }; 2.成员函数 定义成员函数时,使用 ...