转自   http://blog.csdn.net/tianlincao/article/details/7494467

前言

JQuery easyUi datagrid 中 使用datagrid生成数据列表后,需要在每一行加入一个操作按钮列,按钮在默认非编辑状态下是不显示的,需要激活行编辑状态下才显示,故不能再formatter处理,需要使用自定义按钮来处理了。

解决方法

第一步:新增自定义编辑器

自定义编辑器在 jquery.easyui.extend.js 增加,需要实现编辑器的4个默认方法,如下:
  1. $.extend($.fn.datagrid.defaults.editors, {
  2. delEdit : {
  3. init: function(container, options)
  4. {
  5. var editorContainer = $('<div/>');
  6. var button = $("<a href='javascript:void(0)'></a>")
  7. .linkbutton({plain:true, iconCls:"icon-remove"});
  8. editorContainer.append(button);
  9. editorContainer.appendTo(container);
  10. return button;
  11. },
  12. getValue: function(target)
  13. {
  14. return $(target).text();
  15. },
  16. setValue: function(target, value)
  17. {
  18. $(target).text(value);
  19. },
  20. resize: function(target, width)
  21. {
  22. var span = $(target);
  23. if ($.boxModel == true){
  24. span.width(width - (span.outerWidth() - span.width()) - 10);
  25. } else {
  26. span.width(width - 10);
  27. }
  28. }
  29. }
  30. });

这是我新增的一个删除按钮编辑框,按钮用的是easyui的linkbutton,图标样式是icon-remove。

第二步:绑定自定义编辑器

自定义编辑器定义好后,我们在 datagrid的 columns 中增加一列field:
  1. {field:'actionColumn',title:'<%/*自定义删除按钮*/%>',width:20,align:'center',editor:'delEdit'}

actionColumn是json中的列属性,title可以为空或者自己命名,editor指定为自定义的编辑器。

 
接下来我们要让编辑器绑定函数,就要在datagrid触发行编辑的方法中,加入自定义函数:setEditing:
  1. onClickRow:function(rowIndex, rowData){
  2. if(rowIndex == lastIndex)
  3. {
  4. $('#workloadTable').datagrid('endEdit', lastIndex);
  5. lastIndex = -999;
  6. }
  7. else
  8. {
  9. $('#workloadTable').datagrid('endEdit', lastIndex);
  10. $('#workloadTable').datagrid('beginEdit', rowIndex);
  11. $('#workloadTable').datagrid('endEdit', lastIndex);
  12. //增加完成情况字数输入限制
  13. $('#workloadTable').datagrid('beginEdit', rowIndex);
  14. var ed = $('#workloadTable').datagrid('getEditors', rowIndex);
  15. for (var i = 0; i < ed.length; i++)
  16. {
  17. var e = ed[i];
  18. if(e.field == "description")
  19. {
  20. $(e.target).bind("keyup",function()
  21. {
  22. return countChar($(this));
  23. }).bind("change", function()
  24. {
  25. return countChar($(this));
  26. });
  27. }
  28. }
  29. setEditing(rowIndex, rowData);
  30. lastIndex = rowIndex;
  31. }
  32. }

setEditing 就是行编辑器的重构函数,代码如下:

  1. /**
  2. * 重构行编辑器
  3. * @param rowIndex
  4. */
  5. function setEditing(rowIndex, rowData){
  6. var editors = $('#workloadTable').datagrid('getEditors', rowIndex);
  7. var delEditor = editors[3];      // 删除按钮
  8. var delReportButton = delEditor.target;
  9. delReportButton.attr("title",'<%/*删除完成情况*/%><bean:message key="task.workloadnew.addreportbyday.jsp.message003"/>').linkbutton({iconCls:"icon-remove"});
  10. delReportButton.bind("click",function()
  11. {
  12. if(!rowData)
  13. {
  14. return;
  15. }
  16. deleteLog(rowData);  // 删除日志
  17. });
  18. }

这就为我们的delEditor 绑定了click方法,此处也可以绑定其他行编辑框的方法,比如输入字数限制,值设置等。

最后

至此,可以生成列表操作按钮列了。

JQuery easyUi datagrid 中 自定义editor作为列表操作按钮列的更多相关文章

  1. JQuery easyUi datagrid 中 editor 动态设置最大值最小值

    前言 近来项目中使用到 easyui 来进行页面设计,感觉挺方便的,但是网上除了api外,其他有价值的资料比较少,故在此分享一点经验,供大家参考.   问题 JQuery easyUi datagri ...

  2. [WPF]GridView或DataGrid中自定义样式:依据某一列设定其对应行的样式(背景色,字体等)

    附效果照一张: 本方法使用StyleSelector来 获得依据自定义逻辑的style. ① class ConditionalStyleSelector : StyleSelector { publ ...

  3. jquery easyui datagrid设置可编辑行的某个列不可编辑

    function onClickRowd(index1, field1) { if (editIndexd != index1) { if (endEditing()) { $('#dg').data ...

  4. jquery easyui datagrid 无滚动条,datagrid 没垂直滚动条

    jquery easyui datagrid 无滚动条,datagrid 没垂直滚动条 ============================== 蕃薯耀 2018年2月6日 http://www. ...

  5. 扩展jquery easyui datagrid编辑单元格

    扩展jquery easyui datagrid编辑单元格 1.随便聊聊 这段时间由于工作上的业务需求,对jquery easyui比较感兴趣,根据比较浅薄的js知识,对jquery easyui中的 ...

  6. 雷林鹏分享:jQuery EasyUI 数据网格 - 自定义分页

    jQuery EasyUI 数据网格 - 自定义分页 数据网格(datagrid)内置一个很好特性的分页功能,自定义也相当简单.在本教程中,我们将创建一个数据网格(datagrid),并在分页工具栏上 ...

  7. jquery easyui datagrid使用参考

    jquery easyui datagrid使用参考   创建datagrid 在页面上添加一个div或table标签,然后用jquery获取这个标签,并初始化一个datagrid.代码如下: 页面上 ...

  8. Jquery easyui datagrid 导出Excel

    From:http://www.cnblogs.com/weiqt/articles/4022399.html datagrid的扩展方法,用于将当前的数据生成excel需要的内容. 1 <sc ...

  9. 雷林鹏分享:jQuery EasyUI 数据网格 - 自定义排序

    jQuery EasyUI 数据网格 - 自定义排序 如果默认的排序行为不满足您的需求,您可以自定义数据网格(datagrid)的排序行为. 最基础的,用户可以在列上定义一个排序函数,函数名是 sor ...

随机推荐

  1. HhashMap HashTable ConcurrentHashMap

    hashMap hashTable concurrentHashMap hashMap的效率高于hashTable,hashMap是线程不安全的,并发时hashMap put方法容易引起死循环,导致c ...

  2. agc016C - +/- Rectangle(构造 智商题)

    题意 题目链接 Sol 我的思路:直接按样例一的方法构造,若$h \times w$完全被$N \times M$包含显然无解 emm,wa了一发之后发现有反例:1 4 1 3 我的会输出[1 1 - ...

  3. 提高jquery加载速率(有cdn就加载,没有就加载本地)

    <!-- Adds google cdn reference --> <script src="https://cdn.bootcss.com/jquery/3.2.1/j ...

  4. 【Shell脚本学习25】Shell文件包含

    像其他语言一样,Shell 也可以包含外部脚本,将外部脚本的内容合并到当前脚本. Shell 中包含脚本可以使用: . filename 或 source filename 两种方式的效果相同,简单起 ...

  5. Callable的简单使用

    说起java的线程操作,都会想到Thread和Runable这两个, 这两个类可以实现异步和同步. 在大多数的java开发中, 这两个都是实现异步的线程来使用, 但是现在考虑一种情况: 发出一条线程, ...

  6. SpringBoot JUnit4的断言和注解

    Junit4的断言常用方法: assertArrayEquals( new Object[]{ studentService.likeName("小明2").size() > ...

  7. C#添加删除防火墙例外(程序、端口)

    一. 添加 COM 引用 在引用里,选择 COM 页, 找到 NetFwTypeLib , 确定即可 二. 添加允许通过防火墙的例外程序 using System; using System.Coll ...

  8. C#cmd执行命令隐藏窗口,并保持程序一直运行

    把要执行的cmd命令放入一个bat文件里,然后执行: //Process p = Process.Start(bPath); Process pro = new Process();pro.Start ...

  9. 高德地图 获取sha1

    开发版本sha1 控制台输入 cd .android  回车 再输入   keytool -list -v -keystore debug.keystore 回车 输入密钥库口令:  andorid ...

  10. zabbix中监控项报错

    报错信息: zabbix报错(Not all processes could be identified, non-owned process info will not be shown, you ...