• datagrid 可编辑的表格


    1,首先引入easyui的样式和js,

    2,页面:<table id="data" fit="true"> </table>

    3,js部分:

    <script type="text/javascript">
    $(function () {
    var datagrid; //定义全局变量datagrid
    var editRow = undefined; //定义全局变量:当前编辑的行
    datagrid = $("#data").datagrid({
    url: 'getYssfList.json', //请求的数据源
    iconCls: 'icon-save', //图标
    pagination: true, //显示分页
    pageSize: 15, //页大小
    pageList: [15, 30, 45, 60], //页大小下拉选项此项各value是pageSize的倍数
    fit: true, //datagrid自适应宽度
    fitColumn: true, //列自适应宽度
    striped: true, //行背景交换
    nowap: true, //列内容多时自动折至第二行
    border: false,
    onLoadSuccess:function(data){
    //datagrid鼠标经过提示单元格内容(需要在easyui.js中写扩展的doCellTip方法)
    $(this).datagrid('doCellTip',{'max-width':'300px','delay':500});
    },
    columns: [[//显示的列
    {field:'id', title:'编号',sortable: true, checkbox: true},
    {field:'name',title:'材料名称',align:'center','250', sortable: true,editor: { type: 'validatebox', options: { required: true} }},
    {field:'num',title:'数量',align:'center','100', editor: { type: 'validatebox', options: { required: true} } },
    {field:'department',title:'提供部门',align:'center','200', editor: { type: 'validatebox', options: { required: true} } },
    {field:'remarks',title:'备注',align:'center','200', editor: { type: 'validatebox', options: { required: true} } }
    ]],
    queryParams: { action: 'query' }, //查询参数
    toolbar: [{ text: '添加', iconCls: 'icon-add', handler: function () {//添加列表的操作按钮添加,修改,删除等
    //添加时先判断是否有开启编辑的行,如果有则把开户编辑的那行结束编辑
    if (editRow != undefined) {
    datagrid.datagrid("endEdit", editRow);
    }
    //添加时如果没有正在编辑的行,则在datagrid的第一行插入一行
    if (editRow == undefined) {
    datagrid.datagrid("insertRow", {
    index: 0, // index start with 0
    row: {
    id:'',
    name: '',
    num:'',
    department:'',
    remarks: ''

    }
    });
    //将新插入的那一行开户编辑状态
    datagrid.datagrid("beginEdit", 0);
    //给当前编辑的行赋值
    editRow = 0;
    }

    }
    }, '-',
    { text: '删除', iconCls: 'icon-remove', handler: function () {
    //删除时先获取选择行
    var rows = datagrid.datagrid("getSelections");

    //选择要删除的行
    if (rows.length > 0) {
    $.messager.confirm("提示", "你确定要删除吗?", function (r) {
    if (r) {
    var ids ="" ;
    debugger
    for (var i = 0; i < rows.length; i++) {
    if(rows[i].id==""){
    var rowIndex = datagrid.datagrid('getRowIndex', rows[i]);
    datagrid.datagrid('deleteRow', rowIndex);
    // datagrid.datagrid('reload');//删除后重新加载下
    editRow = undefined;
    //datagrid.datagrid("rejectChanges");
    //datagrid.datagrid("unselectAll");
    //datagrid.datagrid("deleteRow");
    }else{
    ids=ids+rows[i].id+","
    }

    }
    //将选择到的行存入数组并用,分隔转换成字符串,
    //本例只是前台操作没有与数据库进行交互所以此处只是弹出要传入后台的id
    if(ids!=""){
    $.ajax({
    type: "post",
    url: "deleteYssfList.json",
    data: {ids:ids},
    dataType: "json",
    success: function(data){
    if(data.state){
    alert(data.msg);
    }else{
    $.messager.alert('删除:',data.msg);
    }
    $("#data").datagrid('reload');

    }
    });
    }


    }
    });
    }
    else {
    $.messager.alert("提示", "请选择要删除的行", "error");
    }
    }
    }, '-',
    { text: '修改', iconCls: 'icon-edit', handler: function () {
    //修改时要获取选择到的行
    var rows = datagrid.datagrid("getSelections");
    //如果只选择了一行则可以进行修改,否则不操作
    if (rows.length == 1) {
    //修改之前先关闭已经开启的编辑行,当调用endEdit该方法时会触发onAfterEdit事件
    if (editRow != undefined) {
    datagrid.datagrid("endEdit", editRow);
    }
    //当无编辑行时
    if (editRow == undefined) {
    //获取到当前选择行的下标
    var index = datagrid.datagrid("getRowIndex", rows[0]);
    //开启编辑
    datagrid.datagrid("beginEdit", index);
    //把当前开启编辑的行赋值给全局变量editRow
    editRow = index;
    //当开启了当前选择行的编辑状态之后,
    //应该取消当前列表的所有选择行,要不然双击之后无法再选择其他行进行编辑
    datagrid.datagrid("unselectAll");
    }
    }
    }
    }, '-',
    { text: '保存', iconCls: 'icon-save', handler: function () {
    //保存时结束当前编辑的行,自动触发onAfterEdit事件如果要与后台交互可将数据通过Ajax提交后台
    datagrid.datagrid("endEdit", editRow);

    }
    }, '-',
    { text: '取消编辑', iconCls: 'icon-redo', handler: function () {
    //取消当前编辑行把当前编辑行罢undefined回滚改变的数据,取消选择的行
    editRow = undefined;
    datagrid.datagrid("rejectChanges");
    datagrid.datagrid("unselectAll");
    }
    }, '-'],
    onAfterEdit: function (rowIndex, rowData, changes) {
    //endEdit该方法触发此事件
    console.info(rowData);

    //var data="";
    var validData = rowData;
    var data = JSON.stringify(validData);
    $.ajax({
    type: "post",
    url: "saveYssfList.json",
    data: {data:data, case_id:$("#case_id").val(),judicial_id:$("#judicial_id").val()},
    dataType: "json",
    success: function(data){
    if(data.state){
    alert(data.msg);
    }else{
    $.messager.alert('保存:',data.msg);
    }
    $("#data").datagrid('reload');
    editRow = undefined;

    }
    });

    },
    onDblClickRow: function (rowIndex, rowData) {
    //双击开启编辑行
    if (editRow != undefined) {
    datagrid.datagrid("endEdit", editRow);
    }
    if (editRow == undefined) {
    datagrid.datagrid("beginEdit", rowIndex);
    editRow = rowIndex;
    }
    }
    });
    });

    </script>

  • 相关阅读:
    我的canvasnode v0.1完成了
    我们的scrum实践
    好文转贴(6)——代码永远是罪魁祸首吗?
    关于“产品驱动”和“技术驱动”
    居然获“最受读者喜爱的IT图书作译者奖”了
    重写代码 多重登录
    图片验证码接口
    syl/settings.py中配置注册 权限认证
    码云 上传与克隆
    短信验证接口
  • 原文地址:https://www.cnblogs.com/lkzp123456/p/7340258.html
Copyright © 2020-2023  润新知