论坛首页 Web前端技术论坛

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

浏览 33837 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-06-10   最后修改:2010-06-10

datagrid现在具有行编辑能力了,使用时只须在columns中为需要编辑的列添加一个editor属性,编辑保存时同时具有数据校验能力。

看一个例子效果图:

代码如下:

$('#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',width:60},
        {field:'productid',title:'Product',width:100,
            formatter:function(value){
                for(var i=0; i<products.length; i++){
                    if (products[i].productid == value) return products[i].name;
                }
                return 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:150,editor:'text'},
        {field:'status',title:'Status',width:50,align:'center',
            editor:{
                type:'checkbox',
                options:{
                    on: 'P',
                    off: ''
                }
            }
        },
        {field:'action',title:'Action',width:70,align:'center',
            formatter:function(value,row,index){
                if (row.editing){
                    var s = '<a href="#" onclick="saverow('+index+')">Save</a> ';
                    var c = '<a href="#" onclick="cancelrow('+index+')">Cancel</a>';
                    return s+c;
                } else {
                    var e = '<a href="#" onclick="editrow('+index+')">Edit</a> ';
                    var d = '<a href="#" onclick="deleterow('+index+')">Delete</a>';
                    return e+d;
                }
            }
        }
    ]],
    onBeforeEdit:function(index,row){
        row.editing = true;
        $('#tt').datagrid('refreshRow', index);
    },
    onAfterEdit:function(index,row){
        row.editing = false;
        $('#tt').datagrid('refreshRow', index);
    },
    onCancelEdit:function(index,row){
        row.editing = false;
        $('#tt').datagrid('refreshRow', index);
    }
});

 

原文及下载地址:http://jquery-easyui.wikidot.com/tutorial:datagrid12

 

   发表时间:2010-06-12  
请问datagrid如何隐藏列呢?
0 请登录后投票
   发表时间:2010-06-12  
在columns中不定义出来就不显示,但其数据一直可用。
0 请登录后投票
   发表时间:2010-06-12  
stworthy 写道
在columns中不定义出来就不显示,但其数据一直可用。

对的 自己试出来了 也非常感谢你
0 请登录后投票
   发表时间:2010-06-12  
再请教下在editor中的对象属性具体设置呢... 在api上没有呢...
options:{ 
                    valueField:'productid', 
                    textField:'name', 
                    data:products, 
                    required:true 
                } 

比如这样的otpions中的属性定义
非常感激
0 请登录后投票
   发表时间:2010-06-12  
请教  在删除时怎么得到该行的id呀
0 请登录后投票
   发表时间:2010-06-12  
这是学ext的,还没学到家
0 请登录后投票
   发表时间:2010-06-13  
ext做这个好用。
0 请登录后投票
   发表时间:2010-06-13  
angelhanyl 写道
请教  在删除时怎么得到该行的id呀

 

调用deleteRow进行删除时是发生在客户端,这时后台并不发生任何数据操作。

要得到所有已删除的记录,可以调用下面代码:

var rows = $('#tt').datagrid('getChanges', 'deleted');

for(var i=0; i<rows.length; i++){

    alert(rows[i].itemid); // 取得已删除的ID

}

 

这样就可以在客户端进行修改后再一次性提交到后台。

 

0 请登录后投票
   发表时间:2010-06-13  
stworthy 写道
在columns中不定义出来就不显示,但其数据一直可用。


原来这样
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics