ASP.NET MVC5+EF6+EasyUI 后台管理系统(82)-Easyui Datagrid批量操作(编辑,删除,添加)

别再死记硬背AXI协议了!用AXI BRAM Controller的四种写模式(单次、突发、窄突发、非对齐)彻底搞懂它 本文通过Xilinx AXI BRAM Controller的四种写模式(单次、突发、窄突发、非对齐)深入解析AXI协议精髓,帮助工程师摆脱死记硬背。结合波形分析和实战技巧,详细讲解AXI4协议在FPGA开发中的关键行为与性能优化策略,提升数据传输效率与调试能力。 阅读详情

前言

有时候我们的后台系统表单比较复杂,做过进销存或者一些销售订单的都应该有过感觉

虽然Easyui Datagrid提供了行内编辑,但是不够灵活,但是我们稍微修改一下来达到批量编辑,批量删除,批量添加的效果

现在我们来看看原的编辑:来自Easyui 1.5.1的Demo <demo/datagrid/rowediting.html>

接下来,我们主要是要高度自由的编辑实现:

  • 1.可以同时追加多行
  • 2.追加的行可以是任何位置
  • 3.可以随时进行编辑任意位置的行
  • 4.保存再统一验证

实现

在原有的rowediting.html进行修改!

第一:修改行的点击事件(点击行的时候进入编辑状态)

    function onClickCell(index, field){
            if (editIndex != index) {
                if (endEditing()) {
                    $('#dg').datagrid('selectRow', index)
                            .datagrid('beginEdit', index);
                    var ed = $('#dg').datagrid('getEditor', { index: index, field: field });
                    if (ed) {
                        ($(ed.target).data('textbox') ? $(ed.target).textbox('textbox') : $(ed.target)).focus();
                    }
                    editIndex = index;
                } else {
                    setTimeout(function () {
                        $('#dg').datagrid('selectRow', editIndex);
                    }, 0);
                }
            }
        }

第二:删除事件(点击顶部菜单Remove删除选中的行,点击列表的-号,删除减号行)

function removeit(){
            if (editIndex == undefined){return}
            $('#dg').datagrid('selectRow', editIndex);

                $('#dg').datagrid('cancelEdit', editIndex)
                   .datagrid('deleteRow', editIndex);
            editIndex = undefined;
        }

第三:添加事件,点击菜单的Append和+号

function append(){
            var index = $('#dg').datagrid('getRowIndex', $('#dg').datagrid('getSelected'));
            if (index == -1)
                index = 0;
            $("#dg").datagrid("insertRow", {
                index: index+1,
                row: {oper: "<a href='javascript:append()'>+<a> <a href='javascript:removeit()'>-<a>",status:'P'}
                });
        }

第四:保存(获得操作的记录,包括,增加,修改,删除中的记录)

function accept(){
            if (endEditing()){
                var $dg = $('#dg');
                var rows = $dg.datagrid('getChanges');
                if (rows.length) {
                    var inserted = $dg.datagrid('getChanges', "inserted");
                    var deleted = $dg.datagrid('getChanges', "deleted");
                    var updated = $dg.datagrid('getChanges', "updated");
                    var effectRow = new Object();
                    if (inserted.length) {
                        effectRow["inserted"] = JSON.stringify(inserted);
                    }
                    if (deleted.length) {
                        effectRow["deleted"] = JSON.stringify(deleted);
                    }
                    if (updated.length) {
                        effectRow["updated"] = JSON.stringify(updated);
                    }
                    //alert(inserted);
                    //alert(deleted);
                    //alert(updated);
                }
            }
            //$.post("/Home/Commit", effectRow, function (rsp) {
            //    if (rsp) {
            //        $dg.datagrid('acceptChanges');
            //        bindData();
            //    }
            //}, "JSON").error(function () {
            //    $.messager.alert("提示", "提交错误了!");
            //});
        }

最后我们可以获得,上面操作的,所有:添加的行,删除的行,更新的行!把数据传入到数据后台进行处理!

最后你还需要对数据进行循环校验,可以获得数据,在控制台输出:

console.log(inserted);
console.log(deleted);
console.log(updated);

总结:

最后完整代码:(替换Easyui的rowediting.html可运行效果)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Row Editing in DataGrid - jQuery EasyUI Demo</title>
    <link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="../../themes/icon.css">
    <link rel="stylesheet" type="text/css" href="../demo.css">
    <script type="text/javascript" src="../../jquery.min.js"></script>
    <script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>

    

    <h2>Row Editing in DataGrid</h2>
    <p>Click the row to start editing.</p>
    <div style="margin:20px 0;"></div>
    
    <table  class="easyui-datagrid" title="Row Editing in DataGrid" style="width:800px;height:auto"
            data-options="
                iconCls: 'icon-edit',
                singleSelect: true,
                toolbar: '#tb',
                url: 'datagrid_data1.json',
                method: 'get',
                onClickCell: onClickCell,
                onEndEdit: onEndEdit
            ">
        <thead>
            <tr>
                <th data-options="field:'oper',width:80">操作</th>
                <th data-options="field:'itemid',width:80">Item ID</th>
                <th data-options="field:'productid',width:100,
                        formatter:function(value,row){
                            return row.productname;
                        },
                        editor:{
                            type:'combobox',
                            options:{
                                valueField:'productid',
                                textField:'productname',
                                method:'get',
                                url:'products.json',

                            }
                        }">Product</th>
                <th data-options="field:'listprice',width:80,align:'right',editor:{type:'numberbox',options:{precision:1}}">List Price</th>
                <th data-options="field:'unitcost',width:80,align:'right',editor:'numberbox'">Unit Cost</th>
                <th data-options="field:'attr1',width:250,editor:'textbox'">Attribute</th>
                <th data-options="field:'status',width:60,align:'center',editor:{type:'checkbox',options:{on:'P',off:''}}">Status</th>
            </tr>
        </thead>
    </table>

    <div  style="height:auto">
        <a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-add',plain:true" onclick="append()">Append</a>
        <a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-remove',plain:true" onclick="removeit()">Remove</a>
        <a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-save',plain:true" onclick="accept()">Accept</a>
        <a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-undo',plain:true" onclick="reject()">Reject</a>
        <a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-search',plain:true" onclick="getChanges()">GetChanges</a>
    </div>
    
    <script type="text/javascript">
        //编辑的行
        var editIndex = undefined;
        function endEditing() {
            if (editIndex == undefined){return true}
            $('#dg').datagrid('endEdit', editIndex);
            editIndex = undefined;
            return true;
        }
        
        function onClickCell(index, field){
            if (editIndex != index) {
                if (endEditing()) {
                    $('#dg').datagrid('selectRow', index)
                            .datagrid('beginEdit', index);
                    var ed = $('#dg').datagrid('getEditor', { index: index, field: field });
                    if (ed) {
                        ($(ed.target).data('textbox') ? $(ed.target).textbox('textbox') : $(ed.target)).focus();
                    }
                    editIndex = index;
                } else {
                    setTimeout(function () {
                        $('#dg').datagrid('selectRow', editIndex);
                    }, 0);
                }
            }
        }
        function onEndEdit(index, row){
            var ed = $(this).datagrid('getEditor', {
                index: index,
                field: 'productid'
            });
            row.productname = $(ed.target).combobox('getText');
        }
        function append(){
            var index = $('#dg').datagrid('getRowIndex', $('#dg').datagrid('getSelected'));
            if (index == -1)
                index = 0;
            $("#dg").datagrid("insertRow", {
                index: index+1,
                row: {oper: "<a href='javascript:append()'>+<a> <a href='javascript:removeit()'>-<a>",status:'P'}
                });
        }
        function removeit(){
            if (editIndex == undefined){return}
            $('#dg').datagrid('selectRow', editIndex);

                $('#dg').datagrid('cancelEdit', editIndex)
                   .datagrid('deleteRow', editIndex);
            editIndex = undefined;
        }
        function accept(){
            if (endEditing()){
                var $dg = $('#dg');
                var rows = $dg.datagrid('getChanges');
                if (rows.length) {
                    var inserted = $dg.datagrid('getChanges', "inserted");
                    var deleted = $dg.datagrid('getChanges', "deleted");
                    var updated = $dg.datagrid('getChanges', "updated");
                    var effectRow = new Object();
                    if (inserted.length) {
                        effectRow["inserted"] = JSON.stringify(inserted);
                    }
                    if (deleted.length) {
                        effectRow["deleted"] = JSON.stringify(deleted);
                    }
                    if (updated.length) {
                        effectRow["updated"] = JSON.stringify(updated);
                    }
                    //alert(inserted);
                    //alert(deleted);
                    //alert(updated);
                }
            }
            //$.post("/Home/Commit", effectRow, function (rsp) {
            //    if (rsp) {
            //        $dg.datagrid('acceptChanges');
            //        bindData();
            //    }
            //}, "JSON").error(function () {
            //    $.messager.alert("提示", "提交错误了!");
            //});
        }
        function reject(){
            $('#dg').datagrid('rejectChanges');
            editIndex = undefined;
        }
        function getChanges(){
            var rows = $('#dg').datagrid('getChanges');
            alert(rows.length+' rows are changed!');
        }

        function contains(arr, obj) {
            var i = arr.length;
            while (i--) {
                if (arr[i] === obj) {
                    return true;
                }
            }
            return false;
        }
    </script>
</body>
</html>
View Code

 

ASP .NET MVC中的批量新增数据 开发工具与关键技术:VS+批量新增数据 作者: 李伙 撰写时间: 2019年4月12日 在学习MVC过程中,很多时候要新增多条数据的时候,我们不可能一条一条的新增,一条一条的新增不仅很浪费时间,而且很容易出错。因此我们可以多条数据一起新增,即批量新增数据,这样大大缩短了我们的时间。批量新增数据的代码与批量删除数据的代码大部分相同,但也有不同的代码。先来看看js部分的代码格式: //批量新增 fu... 阅读详情

相关推荐

[官方培训]07-UE材质基础 孙丹璐 Epic 笔记

勾选允许自定义深度写入再在模型上勾选然后可以通过Scene Texture节点拿到渲染的自定义深度信息,有了自定义深度信息就可以与当前渲染的像素深度进行对比,自定义深度信息存放的是最靠近我们的深度,如果当前像素离自定义深度比较远我们就不要这个像素。效果如下这种方案的缺点也很明显,因为这样看不到第二层的透明了,如果是两层的半透明的裙摆,这样就看不到第二层的裙摆了。对于半透明排序问题最根本能解决的还是光线追踪,ue5中又加入了OIT(基于像素的排序)。官方透明材质的理解和应用。

Tcohneyn的博客 1527

LayUI系列(四)之增删改查的实现

layui增删改查的实现

lijie1025的博客 1207

企业合规审查系统开发实战:基于知识图谱与深度学习的智能引擎构建(附完整Python代码)

动态合规监测:实时追踪法规变化并更新知识库智能合约审计:区块链智能合约的自动合规检查跨域知识融合:整合财务、法律、业务多维度数据可解释性增强:基于Attention机制生成合规审查依据。

理论都是虚的,代码才是王道。 438

.NET Core6.0 MVC+layui+SqlSugar 简单增删改查

【代码】.NET Core6.0 MVC+layui+SqlSugar 简单增删改查。

代码笔记 1731

1.实现简单的增删改查(Asp.Net MVC+Layui)

实现简单的增删改查(Asp.Net MVC+Layui)

zeron01的博客 1万+

ASP.NET.Core如何实现增删改查功能

public UserServiceImp(beautyContext beautyContext, CustomJWTService customJWTService, ICaptcha captcha) // 构造函数注入。return new ApiResponse { StatusCode = 200, Message = "查询成功", Data = result };public User UpdateUser(User user) // 修改用户。

ZSR1126的博客 1622

easyui是怎么实现批量删除的_ASP.NET MVC5+EF6+EasyUI 后台管理系统82-Easyui Datagrid批量操作编辑删除添加...

前言有时候我们的后台系统表单比较复杂,做过进销存或者一些销售订单的都应该有过感觉虽然Easyui Datagrid提供了行内编辑,但是不够灵活,但是我们稍微修改一下来达到批量编辑,批量删除,批量添加的效果现在我们来看看原的编辑:来自Easyui 1.5.1的Demo 接下来,我们主要是要高度自由的编辑实现:1.可以同时追加多行2.追加的行可以是任何位置3.可以随时进行编辑任意位置的行4.保存再统一...

weixin_33624741的博客 259

ASP.NET MVC5+EF6+EasyUI 后台管理系统82-Easyui Datagrid批量操作编辑删除添加...

系列目录 前言 有时候我们的后台系统表单比较复杂,做过进销存或者一些销售订单的都应该有过感觉 虽然Easyui Datagrid提供了行内编辑,但是不够灵活,但是我们稍微修改一下来达到批量编辑,批量删除,批量添加的效果 现在我们来看看原的编辑:来自Easyui 1.5.1的Demo <demo/datagrid/rowediting.html> 接下来,我们主要是...

weixin_30726161的博客 94

把旧系统迁移到.Net Core 2.0 日记(8) - EASYUI datagrid+ Dapper+ 导出Excel

迁移也没太大变化,有一个, 之前的Request.QueryString 是返回NameValueCollection, 现在则是返回整个字符串. 你要改成Request.Query[“key”] 直接上代码吧. 1 @using FoxCRMCore 2 @{ 3 var controller = "CRM/Announcement"; 4 ...

dengshumi7891的博客 324

LayUI之CRUD(增删改查)

layui增删改查详解,一步一步带入,回味无穷

weixin_74268571的博客 1847

LayUI之CRUD(增删改查)

使用LayUI界面实现用户的增删改查.

oyang的博客 2655

学习ASP.NET Core Blazor编程系列十四——修改

EditBook(e, @item.ID))">修改出版日期

Gefangenes的博客 284

Layui框架实现用户系统-----增删改查

有需要的小伙伴可以参考。非常详细 ! ! !

m0_73192864的博客 1340

Web项目实战 | 购物系统v2.0 | 开发记录(九)Controller层返回数据的封装 | 商品批量操作 | 五表联立实现商品搜索

——若发现文章内容有误,敬请指正,望不吝赐教,感谢! 文章目录以往记录运行环境一、设计Bean用于Controller层返回数据二、商品批量操作2.1 批量操作的前端设计2.2 批量操作的后端设计三、五表联立实现搜索 以往记录 Web项目实战 | 购物系统v2.0 | 开发记录(一)需求分析 | 技术选型 | 系统设计 | 数据表设计 | SpringBoot、SSM、Thymeleaf、Bootstrap… Web项目实战 | 购物系统v2.0 | 开发记录(二)搭建SpringBoot+SS.

希望每天都能进步一点点 833

后台批量进程开发的总结

1       总述 入口 数据库文件Socket通信   触发条件 时间轮询接口手工          对于批量处理理论上要至少满足以下五个方面的考虑: 事务性统计监控性能错单处理 2       批量使用场景 2.1     批量操作同单笔操作比较 单笔操作: 一般是由客户端触发更加实时;开发相对比较简单当业务处理复杂时,操作

-= 大 明 =- 的专栏 2234

fastadmin后台页面的工具栏添加批量操作按钮详细教程

给fastadmin后台页面的工具栏添加批量操作按钮的详细教程

LordForce的博客 4229

高管变更(总经理变更、董事长变更)数据区间2003-2019

数据期间2003-2019.数据包含以下四项内容:董事长变更:如果该年董事长发生变更则为1,否则为0.变更原因如下:1=工作调动;2=退休;3=任期届满;4=控股权变动;5=辞职;6=解聘;7=健康原因;8=个人;9=完善公司法人治理结构;10=涉案;99=其他;12=结束代理董事长变更1:董事长变更的理由为“解聘”“辞职”“退休”“健康原因”“个人原因”“工作变动”之一而且该高管的年龄小于 60岁,取值为1,否则为0总经理变更:如果该年总经理发生变更,则为,否则为0.变更原因如下:1=工作调动;2=退休;3=任期届满;4=控股权变动;5=辞职;6=解聘;7=健康原因;8=个人;9=完善公司法人治理结构;10=涉案;99=其他;12=结束代理总经理变更1:总经理变更的理由为“解聘”“辞职”“退休”“健康原因”“个人原因”“工作变动”之一而且该高管的年龄小于 60岁,取值为1,否则为0。

上一篇: 深入学习的艺术——每一个程序员都必不可少的技能
下一篇: Log4net配置与使用简要说明
camiiqqo
博客等级 码龄12年 8粉丝 18原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值