`
xwcueh
  • 浏览: 25157 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Easyui datagrid行内【添加】、【编辑】、【上移】、【下移】

阅读更多
1、首先大概说下这几个功能里用到的主要方法,行内添加数据主要是添加列的editor属性, 行内编辑主要使用beginEdit(), endEdit(),同时一个关键就是拿到当前的操作行索引editIndex.

2、撤销用到了rejectChanges().

3、保存时使用getRows()或者getChanges(). getChanges()主要是获取添加或编辑的数据,getRows()获取到本页所有数据,主要是配合【上移】【下移】方法使用。

4、在做这个功能中我使用了一个序列化前台对象组件【json.js】,这个组件可以很方便的把前台的对象转化成json字符串,然后传到后台,实在是方便至极让我眼前一亮,要知道就在这个功能前面我还手动处理数组,使用join()拼字符串,当找到这个组件时速度效率一下几提起来了,实在是相见恨晚。



5、在做这个功能,用到这些方法时遇到的问题,刚开始时我是看easyui的官方demo,我发现添加数据后点保存,再点获取数据时就获取不到了,后经过测试发现好像是调用了acceptChanges()引起的问题。
function GetTable() {
    var editRow = undefined;
 
    $("#Student_Table").datagrid({
        height: 300,
        width: 450,
        title: '学生表',
        collapsible: true,
        singleSelect: true,
        url: '/Home/StuList',
        idField: 'ID',
        columns: [[
         { field: 'ID', title: 'ID', width: 100 },
            { field: 'Name', title: '姓名', width: 100, editor: { type: 'text', options: { required: true } } },
            { field: 'Age', title: '年龄', width: 100, align: 'center', editor: { type: 'text', options: { required: true } } },
            { field: 'Address', title: '地址', width: 100, align: 'center', editor: { type: 'text', options: { required: true } } }
        ]],
        toolbar: [{
            text: '添加', iconCls: 'icon-add', handler: function () {
                if (editRow != undefined) {
                    $("#Student_Table").datagrid('endEdit', editRow);
                }
                if (editRow == undefined) {
                    $("#Student_Table").datagrid('insertRow', {
                        index: 0,
                        row: {}
                    });
 
                    $("#Student_Table").datagrid('beginEdit', 0);
                    editRow = 0;
                }
            }
        }, '-', {
            text: '保存', iconCls: 'icon-save', handler: function () {
                $("#Student_Table").datagrid('endEdit', editRow);
 
                //如果调用acceptChanges(),使用getChanges()则获取不到编辑和新增的数据。
 
                //使用JSON序列化datarow对象,发送到后台。
                var rows = $("#Student_Table").datagrid('getChanges');
 
                var rowstr = JSON.stringify(rows);
                $.post('/Home/Create', rowstr, function (data) {
                     
                });
            }
        }, '-', {
            text: '撤销', iconCls: 'icon-redo', handler: function () {
                editRow = undefined;
                $("#Student_Table").datagrid('rejectChanges');
                $("#Student_Table").datagrid('unselectAll');
            }
        }, '-', {
            text: '删除', iconCls: 'icon-remove', handler: function () {
                var row = $("#Student_Table").datagrid('getSelections');
                 
            }
        }, '-', {
            text: '修改', iconCls: 'icon-edit', handler: function () {
                var row = $("#Student_Table").datagrid('getSelected');
                if (row !=null) {
                    if (editRow != undefined) {
                        $("#Student_Table").datagrid('endEdit', editRow);
                    }
 
                    if (editRow == undefined) {
                        var index = $("#Student_Table").datagrid('getRowIndex', row);
                        $("#Student_Table").datagrid('beginEdit', index);
                        editRow = index;
                        $("#Student_Table").datagrid('unselectAll');
                    }
                } else {
                     
                }
            }
        }, '-', {
            text: '上移', iconCls: 'icon-up', handler: function () {
                MoveUp();
            }
        }, '-', {
            text: '下移', iconCls: 'icon-down', handler: function () {
                MoveDown();
            }
        }],
        onAfterEdit: function (rowIndex, rowData, changes) {
            editRow = undefined;
        },
        onDblClickRow:function (rowIndex, rowData) {
            if (editRow != undefined) {
                $("#Student_Table").datagrid('endEdit', editRow);
            }
 
            if (editRow == undefined) {
                $("#Student_Table").datagrid('beginEdit', rowIndex);
                editRow = rowIndex;
            }
        },
        onClickRow:function(rowIndex,rowData){
            if (editRow != undefined) {
                $("#Student_Table").datagrid('endEdit', editRow);
 
            }
            
        }
        
    }); 
}

上移下移代码:
<br><br>//上移
function MoveUp() {
    var row = $("#Student_Table").datagrid('getSelected'); 
    var index = $("#Student_Table").datagrid('getRowIndex', row);
    mysort(index, 'up', 'Student_Table');
     
}
//下移
function MoveDown() {
    var row = $("#Student_Table").datagrid('getSelected');
    var index = $("#Student_Table").datagrid('getRowIndex', row);
    mysort(index, 'down', 'Student_Table');
     
}
 
 
function mysort(index, type, gridname) {
    if ("up" == type) {
        if (index != 0) {
            var toup = $('#' + gridname).datagrid('getData').rows[index];
            var todown = $('#' + gridname).datagrid('getData').rows[index - 1];
            $('#' + gridname).datagrid('getData').rows[index] = todown;
            $('#' + gridname).datagrid('getData').rows[index - 1] = toup;
            $('#' + gridname).datagrid('refreshRow', index);
            $('#' + gridname).datagrid('refreshRow', index - 1);
            $('#' + gridname).datagrid('selectRow', index - 1);
        }
    } else if ("down" == type) {
        var rows = $('#' + gridname).datagrid('getRows').length;
        if (index != rows - 1) {
            var todown = $('#' + gridname).datagrid('getData').rows[index];
            var toup = $('#' + gridname).datagrid('getData').rows[index + 1];
            $('#' + gridname).datagrid('getData').rows[index + 1] = todown;
            $('#' + gridname).datagrid('getData').rows[index] = toup;
            $('#' + gridname).datagrid('refreshRow', index);
            $('#' + gridname).datagrid('refreshRow', index + 1);
            $('#' + gridname).datagrid('selectRow', index + 1);
        }
    }
 
}

后台获取代码:
[HttpPost]
 public ActionResult Create()
 {
     string result = Request.Form[0];
       
     //后台拿到字符串时直接反序列化。根据需要自己处理
     var list = JsonConvert.DeserializeObject<List<Student>>(result);
 
     return Json(true);
 }
分享到:
评论
1 楼 jiajunli 2014-08-14  

相关推荐

    easyUI datagrid 实现行上移,下移,置顶,置底,排序提交后台绑定键盘事件

    easyUI datagrid 实现行上移,下移,置顶,置底,排序提交后台绑定键盘事件

    easyUI datagrid 行上移,下移,置顶,置底的方法

    easyUI datagrid 行上移,下移,置顶,置底的方法

    easyui datagrid中实现上下左右、回车切换单元格

    easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格

    easyui datagrid在编辑状态下更新列的值

    在标题“easyui datagrid在编辑状态下更新列的值”中,我们关注的是如何在Datagrid的编辑模式下动态地修改列的值,以及确保在编辑结束后,保存的数据反映这些变更。以下将详细介绍这一过程。 首先,EasyUI的...

    easyui datagrid editor回车切换单元格示例,可参考

    easyui datagrid editor回车切换单元格示例,适合熟悉easyui但又不懂如何做的人员,可能参考一下源码JS。

    easyui datagrid实现实现上下左右和回车切换单元格

    根据提供的文件信息,本文将详细解释如何在EasyUI DataGrid中实现上下左右及回车键切换单元格的功能。EasyUI 是一个基于 jQuery 的用户界面插件集合,它提供了丰富的 UI 组件来帮助开发者快速构建现代化的 Web 应用...

    easyui datagrid 数据导出到Excel

    在IT行业中,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如排序、分页、过滤等。在实际工作中,我们经常需要将这些展示的数据导出到Excel文件,以便进行进一步的分析或存储。下面...

    easyui datagrid 右冻结

    标题中的“easyui datagrid 右冻结”是指在使用EasyUI框架开发Web应用程序时,针对datagrid组件实现右侧列固定的功能。EasyUI是一个基于jQuery的UI库,提供了丰富的组件,包括datagrid,它是一个用于展示表格数据的...

    JS EasyUI DataGrid动态加载数据

    JS EasyUI DataGrid是一款基于jQuery和EasyUI框架的数据表格组件,它提供了丰富的功能,如数据分页、排序、过滤和自定义操作等。在实际应用中,动态加载数据是DataGrid的一个重要特性,允许用户在需要时加载更多的...

    jquery easyui datagrid demo

    Datagrid 是 jQuery EasyUI 中一个强大的数据展示组件,常用于表格数据的展示和操作,支持分页、排序、过滤、编辑等功能。通过阅读这份文档,我们可以了解 Datagrid 的基本配置和高级特性,以及如何与后端数据源进行...

    easyui datagrid 表格 打印

    在IT领域,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如数据分页、排序、筛选等。当我们需要将Datagrid中的数据进行打印时,可能会遇到一些挑战,因为通常默认的浏览器打印功能...

    easyui datagrid 增加鼠标悬停弹窗事件

    在本示例中,我们关注的是如何在EasyUI的Datagrid组件上添加一个特殊功能:当鼠标悬停在某一行时,弹出一个窗口显示该行的关键信息,例如用于图片预览。以下是对这个知识点的详细解释: 1. **EasyUI Datagrid**: ...

    EasyUI DataGrid过滤用法实例

    EasyUI 是一个基于 jQuery 的 UI 框架,它提供了丰富的组件,包括表格(DataGrid)等,使得 Web 应用程序的界面开发更加便捷。在这个"EasyUI DataGrid 过滤用法实例"中,我们将深入探讨如何利用 EasyUI 的 DataGrid ...

    扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件完整版Demo下载

    jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) Demo 扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件,源码奉献!!!

    easyUI datagrid rownumber自适应宽度扩展JS

    easyUI datagrid 自动调整行号大小

    EasyUI dataGrid 行上移,下移,置顶,置底的方法

    EasyUI dataGrid 行上移,下移,置顶,置底的方法。jsp文件

    jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果

    在本文中,我们将探讨如何使用jQuery Easyui的Datagrid组件实现单行的上移和下移功能,并且在操作后保存这些移动的结果。jQuery Easyui Datagrid是一个强大的数据展示工具,它提供了丰富的交互性和自定义选项,使得...

    easyui DataGrid动态编辑

    在本文中,我们将深入探讨EasyUI的DataGrid组件如何实现动态编辑功能。EasyUI是一个基于jQuery的前端框架,它提供了一系列轻量级、易于使用的UI组件,DataGrid就是其中之一,常用于展示和管理表格数据。 DataGrid是...

    jQuery EasyUI编辑DataGrid用combobox实现多级联动

    本文主要探讨的是如何利用jQuery EasyUI的DataGrid和combobox组件实现多级联动的效果,这对于在数据录入时需要根据上一级选择动态更新下一级选项的情况非常有用,比如在本例中的“老师分类”和“老师细类”。...

Global site tag (gtag.js) - Google Analytics