datagrid 添加、修改、删除(转载)

原链接:JQueryEasyUI学习笔记(十)datagrid 添加、修改、删除

基于datagrid框架的删除、添加与修改:

主要是批量删除,双击表单修改、选中行修改,增加行修改,再有就是扩展editor的方法,无需废话,直接上代码,代码中的注释写的很详细:

<script type="text/javascript" charst="utf-8">var editFlag = undefined;//设置一个编辑标记
    //因为layout框架指向href时,只取html页面body中间的部分,所以该页面这样写即可
    //有datagrid包含属性较多,所以尽量使用js的方式初始化datagrid框架
    $(function () {
        $("#dg").datagrid({
            url: "GetJson.ashx", //指向一个一般处理程序或者一个控制器,返回数据要求是Json格式,直接赋值Json格式数据也可,我以demo中自带的Json数据为例,就不写后台代码了,但是我会说下后台返回的注意事项
            iconCls: "icon-add",
            fitColumns: false, //设置为true将自动使列适应表格宽度以防止出现水平滚动,false则自动匹配大小
            //toolbar设置表格顶部的工具栏,以数组形式设置
            idField: ‘id‘, //标识列,一般设为id,可能会区分大小写,大家注意一下
            loadMsg: "正在努力为您加载数据", //加载数据时向用户展示的语句
            pagination: true, //显示最下端的分页工具栏
            rownumbers: true, //显示行数 1,2,3,4...
            pageSize: 10, //读取分页条数,即向后台读取数据时传过去的值
            pageList: [10, 20, 30], //可以调整每页显示的数据,即调整pageSize每次向后台请求数据时的数据
            //由于datagrid的属性过多,我就不每个都介绍了,如有需要,可以看它的API
            sortName: "name", //初始化表格时依据的排序 字段 必须和数据库中的字段名称相同
            sortOrder: "asc", //正序
            columns: [[
                {
                    field: ‘code‘, title: ‘Code‘, width: 100,
                    editor: {//设置其为可编辑
                        type: ‘validatebox‘,//设置编辑样式 自带样式有:text,textarea,checkbox,numberbox,validatebox,datebox,combobox,combotree 可自行扩展
                        options: {}
                    }
                },
                {
                    field: ‘name‘, title: ‘Name‘, width: 100, sortable: true,
                    editor: {//设置其为可编辑
                        type: ‘validatebox‘,//设置编辑格式
                        options: {
                            required: true//设置编辑规则属性
                        }
                    }
                },//sortable:true点击该列的时候可以改变升降序
                {
                    field: ‘addr‘, title: ‘addr‘, width: 100,
                    editor: {//设置其为可编辑
                        type: ‘datetimebox‘,//这里我们将进行一个datetimebox的扩展
                        options: {
                            required: true//设置编辑规则属性
                        }
                    }
                }
            ]],//这里之所以有两个方括号,是因为可以做成水晶报表形式,具体可看demo
            toolbar: [{//在dategrid表单的头部添加按钮
                text: "添加",
                iconCls: "icon-add",
                handler: function () {
                    if (editFlag != undefined) {
                        $("#dg").datagrid(‘endEdit‘, editFlag);//结束编辑,传入之前编辑的行
                    }
                    if (editFlag == undefined) {//防止同时打开过多添加行
                        $("#dg").datagrid(‘insertRow‘, {//在指定行添加数据,appendRow是在最后一行添加数据
                            index: 0,    // 行数从0开始计算
                            row: {
                                code: ‘‘,
                                name: ‘请输入姓名‘,
                                addr: ‘‘
                            }
                        });
                        $("#dg").datagrid(‘beginEdit‘, 0);//开启编辑并传入要编辑的行
                        editFlag = 0;
                    }
                }
            }, ‘-‘, {//‘-‘就是在两个按钮的中间加一个竖线分割,看着舒服
                text: "删除",
                iconCls: "icon-remove",
                handler: function () {
                    //选中要删除的行
                    var rows = $("#dg").datagrid(‘getSelections‘);
                    if (rows.length > 0) {//选中几行的话触发事件
                        $.message.confirm("提示", "您确定要删除这些数据吗?", function (res) {//提示是否删除
                            if (res) {
                                var codes = {};
                                for (var i = 0; i < rows.length; i++) {
                                    codes.push(rows[i].code);
                                }
                                console.info(codes.join(‘,‘));//拼接字符串并传递到后台处理数据,循环删除,成功后刷新datagrid
                            }
                        });
                    }
                }
            }, ‘-‘, {
                text: "修改",
                iconCls: "icon-edit",
                handler: function () {
                    //选中一行进行编辑
                    var rows = $("#dg").datagrid(‘getSelections‘);
                    if (rows.length == 1) {//选中一行的话触发事件
                        if (editFlag != undefined) {
                            $("#dg").datagrid(‘endEdit‘, editFlag);//结束编辑,传入之前编辑的行
                        }
                        if (editFlag == undefined) {
                            var index = $("#dg").datagrid(‘getRowIndex‘, rows[0]);//获取选定行的索引
                            $("#dg").datagrid(‘beginEdit‘, index);//开启编辑并传入要编辑的行
                            editFlag = index;
                        }
                    }
                }
            }, ‘-‘, {
                text: "保存",
                iconCls: "icon-save",
                handler: function () {
                    $("#dg").datagrid(‘endEdit‘, editFlag);
                }
            }, ‘-‘, {
                text: "撤销",
                iconCls: "icon-redo",
                handler: function () {
                    editFlag = undefined;
                    $("#dg").datagrid(‘rejectChanges‘);
                }
            }, ‘-‘],
            onAfterEdit: function (rowIndex, rowData, changes) {//在添加完毕endEdit,保存时触发
                console.info(rowData);//在火狐浏览器的控制台下可看到传递到后台的数据,这里我们就可以利用这些数据异步到后台添加,添加完成后,刷新datagrid
                editFlag = undefined;//重置
            }, onDblClickCell: function (rowIndex, field, value) {//双击该行修改内容
                if (editFlag != undefined) {
                    $("#dg").datagrid(‘endEdit‘, editFlag);//结束编辑,传入之前编辑的行
                }
                if (editFlag == undefined) {
                    $("#dg").datagrid(‘beginEdit‘, rowIndex);//开启编辑并传入要编辑的行
                    editFlag = rowIndex;
                }
            }
        });
    });

    //点击查找按钮出发事件
    function searchFunc() {
        alert("123");
        $("#dg").datagrid("load", sy.serializeObject($("#searchForm").form()));//将searchForm表单内的元素序列为对象传递到后台
        //这里介绍reload的使用,使用reload时,会默认记住当前页面,当点击查询时,如果我们查到的数据只有三条,我们每页显示10挑数据,当前页码是2,那么我们将无法在当前页面看到我们查询出的结果,只有将页面向前跳转才会看到,但是用load就不会出现这种情况
    }

    //点击清空按钮出发事件
    function clearSearch() {
        $("#dg").datagrid("load", {});//重新加载数据,无填写数据,向后台传递值则为空
        $("#searchForm").find("input").val("");//找到form表单下的所有input标签并清空
    }
</script>
<div class="easyui-tabs" fit="true" border="false">
    <div title="数据展示表格" border="false" fit="true">
        <div class="easyui-layout" fit="true" border="false">
            <!--由于查询需要输入条件,但是以toolbar的形式不好,所以我们在Layout框架的头部north中书写查询的相关信息-->
            <!-- 这里我们尽量使其展示的样式与toolbar的样式相似,所以我们先查找toolbar的样式,并复制过来-->
            <div data-options="region:‘north‘,title:‘高级查询‘" style="height: 100px; background: #F4F4F4;">
                <form id="searchForm">
                    <table>
                        <tr>
                            <th>用户姓名:</th>
                            <td>
                                <input name="name" /></td>
                        </tr>
                        <tr>
                            <th>创建开始时间</th>
                            <td>
                                <input class="easyui-datetimebox" editable="false" name="subStartTime" /></td>
                            <!--由于datebox框架上面的数据必须是时间格式的,所以我们用editable="false"来禁止用户手动输入,以免报错-->
                            <th>创建结束时间</th>
                            <td>
                                <input class="easyui-datetimebox" editable="false" name="nsubEndTimeame" /></td>
                            <td><a class="easyui-linkbutton" href="javascript:void(0);" onclick="searchFunc();">查找</a></td>
                            <td><a class="easyui-linkbutton" href="javascript:void(0);" onclick="clearSearch();">清空</a></td>
                        </tr>
                    </table>
                </form>
            </div>
            <div data-options="region:‘center‘,split:false">
                <table id="dg">
                </table>
            </div>
        </div>
    </div>
</div>

扩展editor方法:datetimebox

 $(function () {
        /*扩展Editors的datetimebox方法*/
        $.extend($.fn.datagrid.defaults.editors, {
            datetimebox: {//为方法取名
                init: function (container, options) {
                    var editor = $(‘<input />‘).appendTo(container);
                    options.editable = false;//设置其不能手动输入
                    editor.datetimebox(options);
                    return editor;
                },
                getValue: function (target) {//取值
                    return $(target).datetimebox(‘getValue‘);
                },
                setValue: function (target, value) {//设置值
                    $(target).datetimebox(‘setValue‘, value);
                },
                resize: function (target, width) {
                    $(target).datetimebox(‘resize‘, width);
                },
                destroy: function (target) {
                    $(target).datetimebox(‘destroy‘);//销毁生成的panel
                }
            }
        });
    });

图示:

时间: 2024-11-28 16:19:20

datagrid 添加、修改、删除(转载)的相关文章

动态添加修改删除html表格内容

1.需求 需要实现收银台上添加修改删除商品信息时顾显可以实时看到其变化 2.解决 收银台和顾显通过tcp传输进行数据通信,顾显通过操作html中的表格进行数据添加修改和删除操作 3.代码 mytest.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Dynamic Table<

FileSystemObject组件新建读取添加修改删除功能实例

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>FileSystemObject组件应该实例</title> </head> <

【转】C#添加修改删除文件文件夹大全

[转]C#添加修改删除文件文件夹大全 C#添加修改删除文件文件夹大全 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt");sw.WriteLine("追逐理想");sw.WriteLine("kzlll");sw.WriteLine(".NET笔记");sw.Flush();sw.Close();C#拷贝文件string

Web 1三级联动 下拉框 2添加修改删除 弹框

Web  三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { private MyDBDataContext _Context = new MyDBD

打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件

第三章 建议学习时间8小时      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demoback.lalalaweb.com  前台:demo.lalalaweb.com 演示过程中可能会发现bug,希望即时留言反馈,谢谢 源码下载:https://github.com/sutianbinde/classweb               //不是全部的代码,每次更新博客才更新代码 学

web测试点整理(四) -- 添加/修改/删除功能

声明:是参考了很多他人的文章以及自己的一些经验做了总结,因为时间久远,也没有留下当时的参考链接,如果涉及引用别人的内容,请留言说明,谢谢 添加.修改 特殊键 是否支持Tab键 是否支持回车键 提示信息 不符合要求的地方是否有错误提示 唯一性 字段唯一的,是否可以重复添加,添加后是否能修改为已存在的字段(字段包括区分大小写以及在输入的内容前后输入空格,保存后,数据是否真的插入到数据库中,注意保存后数据的正确性) 数据正确性: 对编辑页的每个编辑项进行修改,点击保存,是否可以保存成功,检查相关联的数

关于XML的读取,添加,修改,删除

----- 转载CSDN,觉得作者写挺好,记录这里当做笔记学习,且对应方法msdn查了一下,添加了注释更加透彻明白,有什么不对,请留言指教: 其中, XmlNode 继承于 IConeable,IEnumerable,IXPathNavigable; XmlDocument 继承于XmlNode; XmlElement 继承于XmlLinkedNode,而XmlLinkedNode 继承于XmlNode; XML文档 1 <?xml version='1.0' encoding='gb2312'

MySQL 字段常用操作 添加,修改,删除,调整字段顺序

整理备忘: 添加字段:alter table 表名Add column 字段名 字段类型  默认值 AFTER 字段名 (在哪个字段后面添加) 例子: alter table appstore_souapp_app_androidmarket Add column getPriceCurrency varchar(50) default null AFTER getPrice 修改字段:alter table表名change 字段名 新字段名 字段类型 默认值 例子: alter table a

EF简单的添加修改删除基本语法

using ( androidhiveEntities db = new androidhiveEntities() )                { #region 添加                    //aa a = new aa() { endDate =DateTime.Now,name="张三",doccode="ddoccode ",startDate=DateTime.Now };                    //db.aa.Ad

asp.net对xml文件的读写,添加,修改,删除操作

using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; usi