zoukankan      html  css  js  c++  java
  • EasyUI Datagrid 单元格编辑

    3:对于单元格的编辑

    $('#Units').datagrid({ 
        pageNumber: 1, 
        //url: "@ViewBag.Domain/Paper/GetQuestionUnit", 
        columns: [[ 
            { field: 'Id', title: 'id',  100, editor: 'text' }, 
            { field: 'Name', title: 'name',  100, editor: 'text' } 
        ]], 
        pagination: false, 
        rownumbers: true, 
        onClickCell: onClickCell 
    });

    editor 也可以是一个类型,如下:

    {field:'projectID', 
        title:'Project/Paid Leave', 
        100, 
        editor:{ 
            type:'combobox', 
            options:{ 
                valueField:'id', 
                textField:'DescriptionCode', 
                data:cmbprojects, 
                required:true, 
                editable:false, 
                onSelect:function(record){  
                }  
            }  
        }

    默认的,EasyUI 对于编辑,是以行为单位的,也就是说,你要触发编辑,首先触发的是整行的编辑,类似如下:

    $('#Units').datagrid('beginEdit', index);
    

     

    上面的代码的意思是,第 index 行,可以编辑。如果要编辑单元格,一般我们用于单击某单元格,某行就可以编辑,则代码如下:

    function onClickCell(index, field) { 
        $('#Units').datagrid('beginEdit', index); 
        var ed = $('#questionUnits').datagrid('getEditor', { index: index, field: field }); 
        $(ed.target).val("dddd"); 
        $('#Units').datagrid('endEdit', index); 
    }

    在上面的方法中,第二行表示得到当前的 editor,注意,getEditor 方法必须要在 beginEdit 之后,否则,我们得到的 ed 为 null。当得到了 editor ,就可以为其赋值,如果你不想在界面中输入的话。endEdit 方法关闭行的可编辑状态,并且表示 datagrid 接收了值的修改,这个时候,我们如果查看 $('#questionUnits').datagrid('getRows'),得到的就是修改过后的值。

    如果在 onClickCell 中不 endEdit,还可以在外部批量接受修改的值,使用方法:

    $('#Units').datagrid('acceptChanges');

    3.1 如何启动对指定单元格的修改

    上面也说了,beginEdit 启动的是对行的修改,如果对行中的某个单元格启动修改,而其它单元格根本不启动修改,其中一个办法是:

    $(ed.target).attr("disabled", true);

    3.2 如何让 Row 获取 Editor 的额外属性

    除非扩展一个自己的 Eidtor,否则 Editor 只有两个属性:type,options。但是,另外一种思路是,获取 Columns 的 Options 来达到此目的。比如,定义 Editor 为:

    editor: { type: 'numberbox', options: { "UnitTemplateCode": item.Id } }

    然后,得到 col,如下:

    var fields = $('#UnitScores').datagrid('getColumnFields');

    var col = $('#UnitScores').datagrid('getColumnOption', fields[i]);

    然后,通过如下代码,就可以得到额外的属性 UnitTemplateCode。

    col.editor.options.UnitTemplateCode

    3.3 此 Editor 非彼 Editor

        var ed = $('#Units').datagrid('getEditor', { index: index, field: field });

    我们也得到了一个 Editor,即:ed,它是一个在 EasyUI 框架内定义的对象,跟我们通过 col.editor 得到的对象不是同一个对象。

     3.4 单元格合计值

     

    $(function () {
                var lastIndex;
                $('#tt').datagrid({
                    url: 'webjson.ashx',
                    title: 'Load Data ',
                    iconCls: 'icon-save',
                    singleSelect: true,  
                    loadMsg: '数据加载中请稍后……',
                     600,
                    height: 300,                
                    columns: [[
                        { field: 'itemid', title: 'Item ID',  80 },
                        { field: 'productid', title: 'Product ID',  100 },
                        { field: 'listprice', title: 'List Price',  80, align: 'right', editor: "numberbox" }, //增加可编辑
                        { field: 'unitcost', title: 'Unit Cost',  80, align: 'right', editor: "numberbox" },//增加可编辑
                        { field: 'attr1', title: 'Attribute',  150, editor: "text" },//这里虽为编辑类型,但是已经修改源码,成为不可以状态
                        { field: 'status', title: 'Status',  60, align: 'center' }
                    ]],
                    pageSize: 5,
                    pageList:[5,10,20,30],
                     pagination: true,
                    rownumbers: true ,
                    onClickRow: function (rowIndex) {
                        if (lastIndex != rowIndex) {
                            $('#tt').datagrid('endEdit', lastIndex);
                            $('#tt').datagrid('beginEdit', rowIndex);
                            setEditing(rowIndex);
                        }
                        lastIndex = rowIndex;
                    }
                   
                });
            });

     

    //具体实现方法

          function setEditing(tablename,rowIndex) {
                var editors = $('#tt').datagrid('getEditors', rowIndex);
                var priceEditor = editors[0];
                var amountEditor = editors[1];
                var sumcount = editors[2];
                priceEditor.target.bind('change', function () {
                    //                calculate();
                    var sum = priceEditor.target.val() * amountEditor.target.val();
                    alert(sum);
                    sumcount.attr1.val(sum);
     
                });
                amountEditor.target.bind('change', function () {
                    var sum = priceEditor.target.val() + amountEditor.target.val();
                    alert(sum);
    
                });
    
    
            }

     

    原文地址:http://www.tuicool.com/articles/UZZJr2

  • 相关阅读:
    【Eolinker使用】接口测试--如何解决接口重定向
    ExtJS按钮
    Redis-消费模式
    Redis笔记教程
    C++中this指针的用法
    C — 对C语言的认识
    你还在迷茫什么
    2019-2020-1 20199324《Linux内核原理与分析》第四周作业
    2019-2020-1 20199324《Linux内核原理与分析》第三周作业
    2019-2020-1 20199324《Linux内核原理与分析》第二周作业
  • 原文地址:https://www.cnblogs.com/kszit/p/3623289.html
Copyright © 2011-2022 走看看