[转载]Enable DataGrid Inline Editing – jQuery EasyUI.
Tutorial » Enable DataGrid Inline Editing
The editable feature was recently added to the datagrid. It enable the user to add a new row to the datagrid. The user may also update one or more rows.
This tutorial shows how to create a datagrid with inline editing.
Create DataGrid
- $(function(){
- $(‘#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;
- updateActions();
- },
- onAfterEdit:function(index,row){
- row.editing = false;
- updateActions();
- },
- onCancelEdit:function(index,row){
- row.editing = false;
- updateActions();
- }
- });
- });
- function updateActions(){
- var rowcount = $(‘#tt’).datagrid(‘getRows’).length;
- for(var i=0; i<rowcount; i++){
- $(‘#tt’).datagrid(‘updateRow’,{
- index:i,
- row:{action:”}
- });
- }
- }
To enable editing in datagrid, you should add a editor property to the columns. The editor tells datagrid how to edit the field and how to save the field value. As you can see we define three editor:text,combobox and checkbox.
- function editrow(index){
- $(‘#tt’).datagrid(‘beginEdit’, index);
- }
- function deleterow(index){
- $.messager.confirm(‘Confirm’,‘Are you sure?’,function(r){
- if (r){
- $(‘#tt’).datagrid(‘deleteRow’, index);
- }
- });
- }
- function saverow(index){
- $(‘#tt’).datagrid(‘endEdit’, index);
- }
- function cancelrow(index){
- $(‘#tt’).datagrid(‘cancelEdit’, index);
- }
Download the EasyUI example: