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

今天在开发一个功能时候,需要直接在列表实现新增、编辑等功能。于是查看easyui 相关文档,找到相关解决办法。

easyui的datagrid支持可编辑功能。它使用户能够向数据网格中添加一个新行。用户也可以更新一个或多个行。

下面是我在项目中的实现代码:

第一步:引用

easyui.css

jquery-1.8.1.min.js

jquery.easyui.min.js

第二步: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‘,
                width:660,
                height:250,
                singleSelect:true,
                idField:‘itemid‘,
                url:‘data/datagrid_data.json‘,
                columns:[[
                    {field:‘itemid‘,title:‘Item ID‘,width:60},
                    {field:‘productid‘,title:‘Product‘,width: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‘,width:80,align:‘right‘,editor:{type:‘numberbox‘,options:{precision:1}}},
                    {field:‘unitcost‘,title:‘Unit Cost‘,width:80,align:‘right‘,editor:‘numberbox‘},
                    {field:‘attr1‘,title:‘Attribute‘,width:180,editor:‘text‘},
                    {field:‘status‘,title:‘Status‘,width:50,align:‘center‘,
                        editor:{
                            type:‘checkbox‘,
                            options:{
                                on: ‘P‘,
                                off: ‘‘
                            }
                        }
                    },
                    {field:‘action‘,title:‘Action‘,width: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>
    

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

时间: 2024-12-09 18:03:13

Editable DataGrid 实现列表新增编辑功能的相关文章

atitit.新增编辑功能 跟orm的实现 attilax p31

atitit.新增编辑功能 跟orm的实现 attilax p31 1. 流程的实现 1 2. view的实现(dwr) 1 3. 获取表结构 1 4. grep filt req params 2 5. 转换成个atiorm map 3 6. 转换成个sql 4 7. 参考 4 1. 流程的实现 传统的orm的问题::不能动态insert...  myeclipse到是容易的...要是eclispe走麻烦的兰... 在说,cant 动态添加字段,要同步修改domain文件... 所以,atio

flex中dataGrid的编辑功能

flex中dataGrid的编辑功能 在flex的dataGrid中,很多情况下列是需要嵌入其他的控制的,比如:checkbox,combox等,此时需要利用dataGrid的如下功能: 1.datagrid编辑功能简介     当我们点击datagrid中的一个单元格进行编辑时,可结合使用一些组件,RadioButtonGroup.checkbox.ComboBox等     datagrid的编辑功能必须使用以下组件:editorDataField.itemEditor和itemRender

sharepoint 2016 学习系列篇(16)-自定义列表应用篇-(5)列表的快速编辑功能

平时我们都是通过新增按钮进行添加数据,其实还有一种更加方便使用,而且快捷的方式录入数据,就是列表的快速编辑功能,这里我们来演示下,这个功能的好用之处. 打开前面创建好的用户信息表,点击快速编辑(edit)按钮, 进入快速编辑模式,然后选中一行数据,当然如果有多行数据,也可以选择多行,接下来用键盘快捷键Ctrl+C进行复制 会弹出一个提示框,点击允许访问 选中列表的空白行 用快捷键Ctrl+V进行粘贴. 我们发现,数据已经新增进去了,这里还可以对每个单元格进行修改,和Excel的操作方式很相识,录

subGrid实现内外datagrid都可编辑功能

前一篇文章介绍了如何创建一个拥有subGrid的datagrid,不过仅仅是展示数据,并未涉及到编辑 那么,若是需要subGrid实现可编辑功能该怎么做呢? 要解决这个问题首先得有一个清晰的思路和明确的目标,到底需要将subGrid打造成怎么样呢? 还是用一个具体的例子来说明问题,就拿最近在做的项目来看吧,有一个需求是这样的: 1.显示所有派去维修的记录(一人一条),且每条记录有一些费用数据 2.每条派工记录中有详细的耗材记录 3.耗材要有添加修改删除的功能 这其实就是典型的"一条记录头,下面多

034 datagrid编辑功能使用方式 - bos

数据表格编辑功能是以列为单位通过数据表格中的列属性指定具体那一列具有编辑功能:editor beginEdit:开始编辑一行 endEdit:编辑一行结束 insertRow:插入一行 deleteRow:删除一行 getRowIndex:给定行对象,返回其在数据表格中的索引 数据表格用于监听结束编辑的事件: onAfterEdit:编辑完后触发 onAfterEdit:function(index, data, changes){ alert(data.name); } 示例代码 <table

jquery-easyui 中表格的行编辑功能

具体实现代码如下: <table id="tt"></table> $('#tt').datagrid({ title:'Editable DataGrid', iconCls:'icon-edit', width:660, height:250, singleSelect:true, idField:'itemid', url:'datagrid_data.json', columns:[[ {field:'itemid',title:'Item ID',wi

c# 框架学习(nop )总结-------编辑功能

一.在js中配置列: <script> $(document).ready(function () { $("#enterprise-grid").kendoGrid({ dataSource: { type: "json", transport: { read: { url: "@Html.Raw(Url.Action("List", "Individual"))", type: "

利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能

我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序 HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据,难免会含有方便操作的 主键ID这列的记录.现在项目需要在easyUI的DataGrid中显示的数据能全部导出Excel,包括DataGrid中的中文标题,其他的统统不 要. 完成该功能所需的工具和环境:Newtonsoft.Json序列化和反序列化类库.easyUI前端UI框架.HttpHandl

JEECG 商业版本最近新增什么功能啦?

JEECG 商业版本最近新增什么功能啦? 2014-12-18 JEECG JEECG jeecg增加新的功能啦!!! 1.流程设计器 2.集成工作流引擎activit,智能化封装,在线配置表单,在线设计流程,流程和表单挂接,给任意节点配置任意表单 3.数据权限(列表级,字段级) 4.国际化 5.多数据源 6.消息中间件(微信推送,短信,邮件等) 7.支持多组织机构,多公司 8.poi工具化 9.系统更稳定,功能更完善 阅读原文举报