1. 在实际应用中可能会碰到不同的需求,比如会根据每行不同的参数或属性设置来设置同列不同的editor类型,这时原有的例子就显的有点太过简单,不能实现我们的需求,现在应用我在项目中的操作为例,显示下实现同列不同操作的情况:(在这,我把例子的情况完全整合到了js里面配置实现,如有习惯于js实现方式的也可参考)
  2. html:
  3. <table id="comTypeAndPropertyTree"></table>//个人觉得这样更显的页面清晰,所有的配置都放到js里实现
  4. js:
  5. var types = [
  6. {typeId:0,typeName:'Normal'},
  7. {typeId:1,typeName:'URL'},
  8. {typeId:2,typeName:'Symbol'}
  9. ];
  10. $(function(){
  11. var lastIndex;
  12. $('#comTypeAndPropertyTree').treegrid({
  13. title:'产品库配置',
  14. height:550,
  15. rownumbers: true,
  16. animate:true,
  17. url:'getComTypeAndPropertyTreeRoot.action',
  18. idField:'id',//id=productId_propId_largetypeId_midlletypeId_comtypeId;
  19. treeField:'name',
  20. frozenColumns:[[
  21. {title:'名称',field:'name',width:300,
  22. formatter:function(value){
  23. return '<span style="color:red">'+value+'</span>';
  24. }
  25. }
  26. ]],
  27. columns:[[
  28. {title:'library',field:'library',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
  29. formatter:function(value,row){
  30. if(!row.leaf){
  31. if(value==1){
  32. return '<img src="data:images/checkbox_checked.jpg"/>';
  33. }else{
  34. return '<img src="data:images/checkbox_unchecked.jpg"/>';
  35. }
  36. }else{
  37. return '';
  38. }
  39. }},
  40. {title:'显示名称',field:'displayName',width:100,editor:'text'},
  41. {title:'type',field:'type',width:100,
  42. editor:{type:'combobox',options:{valueField:'typeId',textField:'typeName',data:types}},
  43. formatter:function(value,row){
  44. if(row.leaf){
  45. for(var i=0; i<types.length; i++){
  46. if (types[i].typeId == value) return types[i].typeName;
  47. }
  48. return types[0].typeName;
  49. }else{
  50. return '';
  51. }
  52. }
  53. },
  54. {title:'Expose',field:'expose',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
  55. formatter:function(value,row){
  56. if(row.leaf){
  57. if(value==1){
  58. return '<img src="data:images/checkbox_checked.jpg"/>';
  59. }else{
  60. return '<img src="data:images/checkbox_unchecked.jpg"/>';
  61. }
  62. }else{
  63. return '';
  64. }
  65. }},
  66. {title:'Annotate',field:'annotate',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
  67. formatter:function(value,row){
  68. if(row.leaf){
  69. if(value==1){
  70. return '<img src="data:images/checkbox_checked.jpg"/>';
  71. }else{
  72. return '<img src="data:images/checkbox_unchecked.jpg"/>';
  73. }
  74. }else{
  75. return '';
  76. }
  77. }
  78. },
  79. {title:'Load',field:'load',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
  80. formatter:function(value,row){
  81. if(row.leaf){
  82. if(value==1){
  83. return '<img src="data:images/checkbox_checked.jpg"/>';
  84. }else{
  85. return '<img src="data:images/checkbox_unchecked.jpg"/>';
  86. }
  87. }else{
  88. return '';
  89. }
  90. }
  91. },
  92. {title:'Name Available',field:'nameAvailable',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
  93. formatter:function(value,row){
  94. if(row.leaf){
  95. if(value==1){
  96. return '<img src="data:images/checkbox_checked.jpg"/>';
  97. }else{
  98. return '<img src="data:images/checkbox_unchecked.jpg"/>';
  99. }
  100. }else{
  101. return '';
  102. }
  103. }
  104. },
  105. {title:'Value Available',field:'valueAvailable',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
  106. formatter:function(value,row){
  107. if(row.leaf){
  108. if(value==1){
  109. return '<img src="data:images/checkbox_checked.jpg"/>';
  110. }else{
  111. return '<img src="data:images/checkbox_unchecked.jpg"/>';
  112. }
  113. }else{
  114. return '';
  115. }
  116. }
  117. },
  118. {title:'Export As OAT',field:'exportAsOAT',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
  119. formatter:function(value,row){
  120. if(row.leaf){
  121. if(value==1){
  122. return '<img src="data:images/checkbox_checked.jpg"/>';
  123. }else{
  124. return '<img src="data:images/checkbox_unchecked.jpg"/>';
  125. }
  126. }else{
  127. return '';
  128. }
  129. }
  130. },
  131. {title:'Required',field:'required',width:100,editor:{type:'checkbox',options:{on:'1',off:'0'}},
  132. formatter:function(value,row){
  133. if(row.leaf){
  134. if(value==1){
  135. return '<img src="data:images/checkbox_checked.jpg"/>';
  136. }else{
  137. return '<img src="data:images/checkbox_unchecked.jpg"/>';
  138. }
  139. }else{
  140. return '';
  141. }
  142. }
  143. },
  144. {title:'Units',field:'units',width:100,editor:'text',
  145. formatter:function(value,row){
  146. if(row.leaf){
  147. return value;
  148. }else{
  149. return '';
  150. }
  151. }},
  152. {title:'VM',field:'vm',width:100,editor:'text',
  153. formatter:function(value,row){
  154. if(row.leaf){
  155. return value;
  156. }else{
  157. return '';
  158. }
  159. }}
  160. ]]
  161. ,onClickRow:function(row){//运用单击事件实现一行的编辑结束,在该事件触发前会先执行onAfterEdit事件
  162. var rowIndex = row.id;
  163. if (lastIndex != rowIndex){
  164. $('#comTypeAndPropertyTree').treegrid('endEdit', lastIndex);
  165. }
  166. }
  167. ,onDblClickRow:function(row){//运用双击事件实现对一行的编辑
  168. var rowIndex = row.id;
  169. if (lastIndex != rowIndex){
  170. $('#comTypeAndPropertyTree').treegrid('endEdit', lastIndex);
  171. $('#comTypeAndPropertyTree').treegrid('beginEdit', rowIndex);
  172. lastIndex = rowIndex;
  173. }
  174. }
  175. ,onBeforeEdit:function(row){
  176. beforEditRow(row);//这里是功能实现的主要步骤和代码
  177. }
  178. ,onAfterEdit:function(row,changes){
  179. var rowId = row.id;
  180. $.ajax({
  181. url:"saveProductConfig.action" ,
  182. data: row,
  183. success: function(text){
  184. $.messager.alert('提示信息',text,'info');
  185. }
  186. });
  187. }
  188. });
  189. });
  190. function beforEditRow(row){//这个是核心的,很有用的,如有同样需求的话可以借鉴实现
  191. var libraryCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','library');
  192. var exposeCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','expose');
  193. var annotateCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','annotate');
  194. var loadCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','load');
  195. var nameAvailableCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','nameAvailable');
  196. var valueAvailableCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','valueAvailable');
  197. var exportAsOATCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','exportAsOAT');
  198. var requiredCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','required');
  199. var unitsCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','units');
  200. var vmCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','vm');
  201. var typeCoclum = $('#comTypeAndPropertyTree').treegrid('getColumnOption','type');
  202. var checkboxOptionsObj = new Object();
  203. checkboxOptionsObj.on='1';
  204. checkboxOptionsObj.off='0';
  205. var checkboxEditorObj = new Object();
  206. checkboxEditorObj.type='checkbox';
  207. checkboxEditorObj.options=checkboxOptionsObj;
  208. var comboboxOptionsObj = new Object();
  209. comboboxOptionsObj.valueField='typeId';
  210. comboboxOptionsObj.textField='typeName';
  211. comboboxOptionsObj.data=types;
  212. var comboboxEditorObj = new Object();
  213. comboboxEditorObj.type='combobox';
  214. comboboxEditorObj.options=comboboxOptionsObj;
  215. if(row.leaf){
  216. libraryCoclum.editor=null;
  217. exposeCoclum.editor=checkboxEditorObj;
  218. annotateCoclum.editor=checkboxEditorObj;
  219. loadCoclum.editor=checkboxEditorObj;
  220. nameAvailableCoclum.editor=checkboxEditorObj;
  221. valueAvailableCoclum.editor=checkboxEditorObj;
  222. exportAsOATCoclum.editor=checkboxEditorObj;
  223. requiredCoclum.editor=checkboxEditorObj;
  224. unitsCoclum.editor='text';
  225. vmCoclum.editor='text';
  226. typeCoclum.editor=comboboxEditorObj;
  227. }else{
  228. libraryCoclum.editor=checkboxEditorObj;
  229. exposeCoclum.editor=null;
  230. annotateCoclum.editor=null;
  231. loadCoclum.editor=null;
  232. nameAvailableCoclum.editor=null;
  233. valueAvailableCoclum.editor=null;
  234. exportAsOATCoclum.editor=null;
  235. requiredCoclum.editor=null;
  236. unitsCoclum.editor=null;
  237. vmCoclum.editor=null;
  238. typeCoclum.editor=null;
  239. }
  240. }
  241. 实现效果图:实现流程:onDblClickRow --( onBeforeEdit -- onAfterEdit) -- onClickRow,操作上只需要双击和单击两个事件来完成操作,而另两个事件是在中间自动实现完成。

jQuery-ui treegird 使用的更多相关文章

  1. jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧

    这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...

  2. jQuery UI与jQuery easyUI的冲突解决办法

    jQuery UI与jQuery easyUI都是基于jQuery开发的.难免里面会有些方法名冲突! 因此对jQuery.easyui其中的两个方法名:resizable 和 draggable进行替 ...

  3. 【转】推荐10款最热门jQuery UI框架

    推荐10款最热门jQuery UI框架 原创 在进行Web开发时,并非所有的库都适合你的项目,但你仍需要收藏一些Web UI设计相关的库或框架,以在你需要的时候,加快你的开发效率.本文为你推荐10款非 ...

  4. Jquery UI

    jQuery UI简介 jQuery UI包含了许多维持状态的小部件(Widget),因此,它与典型的 jQuery 插件使用模式略有不同.所有的 jQuery UI 小部件(Widget)使用相同的 ...

  5. JQuery UI dialog 弹窗实例及参数说明

    按钮代码: <a id="suprise" style="margin-left: 0.5em;cursor:pointer;">点我会有惊喜< ...

  6. Jquery UI - DatePicker 在Dialog中无法自动隐藏的解决思路

    通过Jquery UI Dialog模态展示如下的一个员工编辑页面,但是遇到一个奇怪的问题:点击Start Date的input元素后,其无法失去焦点.从而导致DatePicker控件在选择日期后无法 ...

  7. jQuery UI Datepicker使用介绍

    本博客使用Markdown编辑器编写 在企业级web开发过程中,日历控件和图表控件是使用最多的2中第三方组件.jQuery UI带的Datepicker,日历控件能满足大多数场景开发需要.本文就主要讨 ...

  8. 解决Select2控件不能在jQuery UI Dialog中不能搜索的bug

    本文使用博客园Markdown编辑器进行编辑 1.问题呈现 项目中使用了jQuery UI的Dialog控件,一般用来处理需要提示用户输入或操作的简单页面.逻辑是修改一个广告的图片和标题. 效果截图如 ...

  9. 使用requireJS的shim参数 解决插件 jquery.ui 等插件问题

    没有requireJS框架之前,如果我们想使用jquery框架,会在HTML页面中通过<script>标签加载, 这个时候jquery框架生成全局变量$和jQuery等全局变量.如果项目中 ...

  10. Struts2 JQuery UI常用插件

    一.什么是插件 ①是遵循一定接口规范编写的程序 ②是原有系统平台功能的扩展和补充 ③只能运行在规定的系统平台下,而不能单独运行 注:由于jQuery插件是基于jQuery脚本库的扩展,所以所有jQue ...

随机推荐

  1. 解决statusStrip控件上的项目不能靠右对齐的问题

    在c#中用到了状态栏控件StatusStrip,但当我想把StatusStrip上某个StatusLabel靠右对齐时出了问题. 按照MSDN中的办法,是设置ToolStripStatusLabel的 ...

  2. OpenCV 2.2版本号以上显示图片到 MFC 的 Picture Control 控件中

    OpenCV 2.2 以及后面的版本号取消掉了 CvvImage.h 和CvvImage.cpp 两个文件,直接导致了苦逼的程序猿无法调用里面的显示函数来将图片显示到 MFC 的 Picture Co ...

  3. Swift常用语法示例代码(二)

    此篇文章整理自我以前学习Swift时的一些练习代码,其存在的意义多是可以通过看示例代码更快地回忆Swift的主要语法. 如果你想系统学习Swift或者是Swift的初学者请绕路,感谢Github上Th ...

  4. Java 计算两个日期相差月数

    package com.myjava; import java.text.ParseException;import java.text.SimpleDateFormat;import java.ut ...

  5. JAVA(2)——JDBC

    刚接触JDBC的时候,有时候就在想,为什么java要用JDBC,而不是直接使用之前在VB中就学习过的ODBC,由于ODBC是在JDBC之前出现,所以ODBC肯定由于无法完毕某些操作或者不能非常顺利的完 ...

  6. PHP实现Web Service(转)

    1.OAuth OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码)  2.SCA 服务组件 ...

  7. mydumper原理3

    Mydumper介绍 Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具.开发人员主要来自MySQL,Facebook,SkySQL公司.目前已经在一些线上使用了Mydu ...

  8. cocos2dx jsoncpp

    jsoncpp下载 http://sourceforge.net/projects/jsoncpp/ 下载解压后用到的是include\json下面的头文件跟src\lib_json下的文件. 导入头 ...

  9. java_线程安全-service

    package com.demo.test; import java.util.Collections; import java.util.HashMap; import java.util.Map; ...

  10. php执行的困惑

    最近在用php语言实现各种数据结构算法排序,可以说是很蛋疼的一件事,最近遇到了一个问题,不知道是什么原因,姑且放到这里,希望能看到的人予以帮助 首先我用php写了这样一个类 class ListNod ...