• Editable DataGrid 实现列表新增编辑功能


    今天在开发一个功能时候,需要直接在列表实现新增、编辑等功能。于是查看easyui 相关文档,找到相关解决办法。
    easyui的datagrid支持可编辑功能使用户能够数据网格中添加一个用户可以更新一个多个
    下面是我在项目中的实现代码:
    第一步:引用
          easyui.css
    第二步:Html和Javascript代码
        <h2>Editable DataGrid Demo</h2>
        <div class="demo-info">
            <div class="demo-tip icon-tip">&nbsp;</div>
            <div>Click the edit button on the right side of row to start editing.</div>
        </div>
        
        <div style="margin:10px 0">
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="insert()">Insert Row</a>
        </div>
        
        <table id="tt"></table>
        
        <script>
            var products = [
                {productid:'FI-SW-01',name:'Koi'},
                {productid:'K9-DL-01',name:'Dalmation'},
                {productid:'RP-SN-01',name:'Rattlesnake'},
                {productid:'RP-LI-02',name:'Iguana'},
                {productid:'FL-DSH-01',name:'Manx'},
                {productid:'FL-DLH-02',name:'Persian'},
                {productid:'AV-CB-01',name:'Amazon Parrot'}
            ];
            $(function(){
                $('#tt').datagrid({
                    title:'Editable DataGrid',
                    iconCls:'icon-edit',
                    660,
                    height:250,
                    singleSelect:true,
                    idField:'itemid',
                    url:'data/datagrid_data.json',
                    columns:[[
                        {field:'itemid',title:'Item ID',60},
                        {field:'productid',title:'Product',100,
                            formatter:function(value,row){
                                return row.productname || value;
                            },
                            editor:{
                                type:'combobox',
                                options:{
                                    valueField:'productid',
                                    textField:'name',
                                    data:products,
                                    required:true
                                }
                            }
                        },
                        {field:'listprice',title:'List Price',80,align:'right',editor:{type:'numberbox',options:{precision:1}}},
                        {field:'unitcost',title:'Unit Cost',80,align:'right',editor:'numberbox'},
                        {field:'attr1',title:'Attribute',180,editor:'text'},
                        {field:'status',title:'Status',50,align:'center',
                            editor:{
                                type:'checkbox',
                                options:{
                                    on: 'P',
                                    off: ''
                                }
                            }
                        },
                        {field:'action',title:'Action',80,align:'center',
                            formatter:function(value,row,index){
                                if (row.editing){
                                    var s = '<a href="javascript:void(0)" onclick="saverow(this)">Save</a> ';
                                    var c = '<a href="javascript:void(0)" onclick="cancelrow(this)">Cancel</a>';
                                    return s+c;
                                } else {
                                    var e = '<a href="javascript:void(0)" onclick="editrow(this)">Edit</a> ';
                                    var d = '<a href="javascript:void(0)" onclick="deleterow(this)">Delete</a>';
                                    return e+d;
                                }
                            }
                        }
                    ]],
                    onEndEdit:function(index,row){
                        var ed = $(this).datagrid('getEditor', {
                            index: index,
                            field: 'productid'
                        });
                        row.productname = $(ed.target).combobox('getText');
                    },
                    onBeforeEdit:function(index,row){
                        row.editing = true;
                        $(this).datagrid('refreshRow', index);
                    },
                    onAfterEdit:function(index,row){
                        row.editing = false;
                        $(this).datagrid('refreshRow', index);
                    },
                    onCancelEdit:function(index,row){
                        row.editing = false;
                        $(this).datagrid('refreshRow', index);
                    }
                });
            });
            function getRowIndex(target){
                var tr = $(target).closest('tr.datagrid-row');
                return parseInt(tr.attr('datagrid-row-index'));
            }
            function editrow(target){
                $('#tt').datagrid('beginEdit', getRowIndex(target));
            }
            function deleterow(target){
                $.messager.confirm('Confirm','Are you sure?',function(r){
                    if (r){
                        $('#tt').datagrid('deleteRow', getRowIndex(target));
                    }
                });
            }
            function saverow(target){
                $('#tt').datagrid('endEdit', getRowIndex(target));
            }
            function cancelrow(target){
                $('#tt').datagrid('cancelEdit', getRowIndex(target));
            }
            function insert(){
                var row = $('#tt').datagrid('getSelected');
                if (row){
                    var index = $('#tt').datagrid('getRowIndex', row);
                } else {
                    index = 0;
                }
                $('#tt').datagrid('insertRow', {
                    index: index,
                    row:{
                        status:'P'
                    }
                });
                $('#tt').datagrid('selectRow',index);
                $('#tt').datagrid('beginEdit',index);
            }
        </script>
        

    希望可以帮到有类似需求的朋友。

     
          
  • 相关阅读:
    我们在囧途之程序员转型记
    项目开发应遵循1+7还是7+1?
    自己用的一款模板解析程序(支持插件和扩展)(思路讨论和使用体验)
    设计的核心任务之一:层次的控制
    【设计 = 编码】 VS 【设计 ≠ 编码】
    从一生的角度看程序员的学习和发展
    编码质量与命名
    软件开发十年小史
    设计的核心任务之三:确保正交性
    国内外软件开发上的差距与分析
  • 原文地址:https://www.cnblogs.com/fjzhang/p/6102024.html
Copyright © 2020-2023  润新知