zoukankan      html  css  js  c++  java
  • easyUI datagrid editor扩展dialog

    easyUI datagrid简单使用:着重两点1、editor对象的click事件;2、将dialog窗体内的值填写到当前正编辑的单元格内

      1 <!DOCTYPE html>
      2 <html xmlns="http://www.w3.org/1999/xhtml">
      3 <head>
      4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      5     <title></title>
      6     <link href="css/easyui.css" rel="stylesheet" />
      7     <link href="css/icon.css" rel="stylesheet" />
      8     <link href="css/demo.css" rel="stylesheet" />
      9     <script src="js/jquery.min.js"></script>
     10     <script src="js/jquery.easyui.min.js"></script>
     11 </head>
     12 <body>
     13     <!--datagrid-->
     14     <table id="dg"></table>
     15     <!--dialog-->
     16     <div id="dd">
     17         <input type="text" id="txt" />
     18     </div>
     19     <script type="text/javascript">
     20         var columns = [[
     21             { field: 'A', title: 'A',  100, rowspan: 2 },
     22             { title: 'B', colspan: 3 },
     23             { title: 'C', colspan: 3 }
     24         ], [
     25             {
     26                 field: 'a', title: 'a',  100, editor: {
     27                     type: 'textbox',
     28                     options: {
     29                         required: true,
     30                         missingMessage: '*必填*'
     31                     }
     32                 }
     33             },
     34             {
     35                 field: 'b', title: 'b',  100, editor: {
     36                     type: 'datebox'
     37                 }
     38             },
     39             {
     40                 field: 'c', title: 'c',  100, editor: {
     41                     type: 'combobox',
     42                     options: {
     43                         data: [{ value: 'cc', text: 'cc' }, { value: 'ccc', text: 'ccc' }],
     44                         panelHeight: 'auto'
     45                     }
     46                 }
     47             },
     48             {
     49                 field: 'd', title: 'd',  100, editor: {
     50                     type: 'numberbox',
     51                     options: { precision: 1 }
     52                 }
     53             },
     54             { field: 'e', title: 'e',  100, editor: { type: 'checkbox', options: { on: '1', off: '0' } } },
     55              {
     56                  field: 'f', title: 'f',  100, editor: {
     57                      type: 'dialog',
     58                      options: {
     59                          dlgId: 'dd',
     60                          textId: 'txt',
     61                          currField: 'f'
     62                      }
     63                  }
     64              }
     65         ]];
     66         var data = [{ A: 'A', a: 'a', b: 'b', c: 'c', d: 'd', e: 'e', f: 'f' }];
     67         $(function () {
     68             //初始化弹窗
     69             $('#dd').dialog({
     70                 title: '弹窗',
     71                  400,
     72                 height: 'auto',
     73                 closed: true,
     74                 cache: false,
     75                 modal: true,
     76                 buttons: [{
     77                     text: '保存',
     78                     handler: function () {
     79                         var index = editIndex;
     80                         var cellEditor = $('#dg').datagrid('getEditor', { index: index, field: editField });
     81                         cellEditor.actions.setValue(cellEditor.target, $('#txt').val());
     82                         $('#dd').dialog('close');
     83                     }
     84                 }, {
     85                     text: '取消',
     86                     handler: function () {
     87                         $('#dd').dialog('close');
     88                     }
     89                 }]
     90             });
     91             //初始化表格
     92             $('#dg').datagrid({
     93                 data: data,
     94                 title: '对账报告- PA02',
     95                 iconCls: 'icon-title',
     96                  650,
     97                 height: 'auto',
     98                 singleSelect: true,
     99                 fitColumns: false,
    100                 columns: columns,
    101                 rownumbers: true,
    102                 showFooter: true,
    103                 pagination: true,//分页控件
    104                 fit: true,//自动大小
    105                 border: true,
    106                 onLoadSuccess: onLoadSuccess,
    107                 toolbar: [{
    108                     text: '添加',
    109                     iconCls: 'icon-add',
    110                     handler: function () {
    111                         editCell = false;
    112                         if ($('#dg').datagrid('validateRow', editIndex)) {
    113                             $('#dg').datagrid('endEdit', editIndex);
    114                             $('#dg').datagrid('appendRow', {});
    115                             $('#dg').datagrid('selectRow', editIndex + 1).datagrid('beginEdit', editIndex + 1);
    116                             editIndex = editIndex + 1;
    117                         }
    118                     }
    119                 }]
    120             });
    121             //设置分页控件
    122             var p = $('#dg').datagrid('getPager');
    123             $(p).pagination({
    124                 pageSize: 10,//每页显示的记录条数,默认为10
    125                 pageList: [5, 10, 15],//可以设置每页记录条数的列表
    126                 beforePageText: '',//页数文本框前显示的汉字
    127                 showRefresh: false,
    128                 afterPageText: '页    共 {pages} 页',
    129                 displayMsg: '<span style="font-size:20px;font-weight:700"></span>当前显示 {from} - {to} 条记录   共 {total} 条记录'
    130             });
    131         });
    132         var editIndex = -1;//标识编辑行
    133         var editField;//正在编辑的单元格所属字段
    134         function onLoadSuccess() {
    135             editIndex = $('#dg').datagrid('getRows').length - 1;
    136         }
    137         //重写editor,添加弹出框类型
    138         $.extend($.fn.datagrid.defaults.editors, {
    139             dialog: {
    140                 init: function (container, options) {
    141                     var editor = $('<input type="text"/>').appendTo(container);
    142                     editor.textbox(options);
    143                     container.click(function () {
    144                         $('#' + options['dlgId']).dialog('open');
    145                         editField = options['currField'];
    146                     });
    147                     return editor;
    148                 },
    149                 getValue: function (target) {
    150                     return $(target).textbox('getValue', $(target).val());
    151                 },
    152                 setValue: function (target, value) {
    153                     if (value)
    154                         $(target).textbox('setValue', value);
    155                     else
    156                         $(target).textbox('setValue', '');
    157                 },
    158                 resize: function (target, width) {
    159                     $(target).textbox('resize', width);
    160                 },
    161                 destroy: function (target) {
    162                     $(target).textbox('destroy');
    163                 }
    164             }
    165         });
    166     </script>
    167 </body>
    168 </html>
    easyUI datagrid

    页码导航栏pagination,在此处代码中与datagrid分开初始化,自定义了pagination,会导致初始页面加载两次,其原因是第一次表格加载取得总记录数total,和页码栏total值不相等,那么easyui会重新发一次请求,解决办法是可以注释掉源码中再次请求的代码

    1097//if(_b3.total==0){
    1098//_b3.pageNumber=0;
    1099//_b4=0;
    1100//}

    但是还有解决办法,注释掉下面代码,没有测试呢

    if(_615.total!=data.total){
    _614.pagination("refresh",{total:data.total});
    if(opts.pageNumber!=_615.pageNumber){
    opts.pageNumber=_615.pageNumber;
    _5d7(_60f);
    }
    }
  • 相关阅读:
    鼠标悬停改变图片方法
    margin IE6中加倍问题
    js菜单效果
    杂谈
    常见的服务器端口号
    .NET 配置文件设置数据库连接属性
    ASP.NET 利用 Microsoft.Office.Interop.Excel 版本导出Excel数据
    DataGridView 绑定List时 属性不显示的解决方法
    C# 基本文件操作
    构建可克隆对象(ICloneable)
  • 原文地址:https://www.cnblogs.com/hujiapeng/p/4461690.html
Copyright © 2011-2022 走看看