jQuery-ui treegird 使用
- 在实际应用中可能会碰到不同的需求,比如会根据每行不同的参数或属性设置来设置同列不同的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,操作上只需要双击和单击两个事件来完成操作,而另两个事件是在中间自动实现完成。
jQuery-ui treegird 使用的更多相关文章
- jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧
这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...
- jQuery UI与jQuery easyUI的冲突解决办法
jQuery UI与jQuery easyUI都是基于jQuery开发的.难免里面会有些方法名冲突! 因此对jQuery.easyui其中的两个方法名:resizable 和 draggable进行替 ...
- 【转】推荐10款最热门jQuery UI框架
推荐10款最热门jQuery UI框架 原创 在进行Web开发时,并非所有的库都适合你的项目,但你仍需要收藏一些Web UI设计相关的库或框架,以在你需要的时候,加快你的开发效率.本文为你推荐10款非 ...
- Jquery UI
jQuery UI简介 jQuery UI包含了许多维持状态的小部件(Widget),因此,它与典型的 jQuery 插件使用模式略有不同.所有的 jQuery UI 小部件(Widget)使用相同的 ...
- JQuery UI dialog 弹窗实例及参数说明
按钮代码: <a id="suprise" style="margin-left: 0.5em;cursor:pointer;">点我会有惊喜< ...
- Jquery UI - DatePicker 在Dialog中无法自动隐藏的解决思路
通过Jquery UI Dialog模态展示如下的一个员工编辑页面,但是遇到一个奇怪的问题:点击Start Date的input元素后,其无法失去焦点.从而导致DatePicker控件在选择日期后无法 ...
- jQuery UI Datepicker使用介绍
本博客使用Markdown编辑器编写 在企业级web开发过程中,日历控件和图表控件是使用最多的2中第三方组件.jQuery UI带的Datepicker,日历控件能满足大多数场景开发需要.本文就主要讨 ...
- 解决Select2控件不能在jQuery UI Dialog中不能搜索的bug
本文使用博客园Markdown编辑器进行编辑 1.问题呈现 项目中使用了jQuery UI的Dialog控件,一般用来处理需要提示用户输入或操作的简单页面.逻辑是修改一个广告的图片和标题. 效果截图如 ...
- 使用requireJS的shim参数 解决插件 jquery.ui 等插件问题
没有requireJS框架之前,如果我们想使用jquery框架,会在HTML页面中通过<script>标签加载, 这个时候jquery框架生成全局变量$和jQuery等全局变量.如果项目中 ...
- Struts2 JQuery UI常用插件
一.什么是插件 ①是遵循一定接口规范编写的程序 ②是原有系统平台功能的扩展和补充 ③只能运行在规定的系统平台下,而不能单独运行 注:由于jQuery插件是基于jQuery脚本库的扩展,所以所有jQue ...
随机推荐
- 【WinForm】C# 采用POST登录京东
C# POST 传值登录 京东 想做一个DEMO 练练html的传值和接收,就用Winform 做了一个登录京东的程序. 首先参考的网址是: 艹蛋的青春じ 让我蛋疼ミ:http://www.cnblo ...
- ResultSet转成java类对象
在做web开发时遇到一个事情: 需要从mysql数据表中查询数据并遍历查询结果 这样最简单的方式是:查询到结果根据表中字段列表的顺序来一个个获取字段,但这样需要记住字段的顺序,操作起来不是那么方便.因 ...
- 提升 composer 的执行速读
常常遇到 php composer.phar update 等待一二十分钟还没有更新完成的情况. 提升速读的方法: 1. 升级PHP 版本到5.4以上 2. 删除文件夹Vender(或者重命名),之后 ...
- 清除XCode缓存和生成文件
1.Command-Option-Shift-K to clean out the build folder XCode4.2 finder中找到 /Users/apple/Library/ ...
- VMware 9 安装 OS X 10.8.4 并安装 Xcode 4.6
转自:http://blog.csdn.net/weizi4332/article/details/9264799 学习Objective-C必须要有运行环境,Xcode是最好的选择.不过Window ...
- 浅谈Linux的内存管理机制
转至:http://ixdba.blog.51cto.com/2895551/541355 一 物理内存和虚拟内存 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此, ...
- C++_快速排序(纯C版本)
//比较大小 static int compare_int(const void *int1,const void *int2) { if(*(const int*)int1>*(const i ...
- Team Queue
Team Queue Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 2471 Accepted: 926 Descrip ...
- SimpleAliasRegistry implements AliasRegistry
Spring - 4.2.3 // name,alias存储容器 ConcurrentHashMap <alias,name>private final Map<String, St ...
- Python学习笔记 第二课 循环
>>> movies=["The Holy Grail", 1975, "The Life of Brian", 1979, "Th ...