当前位置: 代码迷 >> Java Web开发 >> 小女子请教一个 Ext.ux.grid.RowEditor的有关问题
  详细解决方案

小女子请教一个 Ext.ux.grid.RowEditor的有关问题

热度:10397   发布时间:2013-02-25 21:15:58.0
小女子请问一个 Ext.ux.grid.RowEditor的问题
HTML code
itsmTicketWp.cmlist = new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(), {    header : '任务',    dataIndex : 'task',    width : 200,    editor : new Ext.form.TextField({        allowBlank : false    })}, {    header : '描述',    dataIndex : 'taskDesc',    width : 200,    editor : new Ext.form.TextField({})}, {    header : '位置',    dataIndex : 'attribute',    width : 200,    editor : new Ext.form.TextField({})}, {    header : '巡检值',    dataIndex : 'resultDesc',    width : 200,    editor : new Ext.form.TextField({})}, {    header : '结论',    dataIndex : 'endReview',    width : 200,    editor : {        xtype : 'sysSelect',        options : [ [ '0', '不正常' ], [ '1', '正常' ] ]    },    renderer : function(v, m, r) {        var x = r.get('endReview');        return (x == '0' ? '不正常' : '正常');    }}, {    header : '说明',    dataIndex : 'resultExplain',    width : 200,    editor : new Ext.form.TextField({})} ]);itsmTicketWp.storelist = new Ext.data.Store({    proxy : new Ext.data.HttpProxy({        url : appName + itsmTicketWp.action + '?act=getWorkPollingJson'    }),    reader : new Ext.data.JsonReader({        root : 'datalist'    }, itsmTicketWp.ItsmWpollingItemTemp),    pruneModifiedRecords : true});itsmTicketWp.editor = new Ext.ux.grid.RowEditor({    saveText : '保存',    cancelText : '取消',    commitChangesText : '请先保存或取消',    errorText : '提示'});// 巡检项行编辑保存和取消事件itsmTicketWp.editor.on({    afteredit : function(roweditor, changes, record, rowIndex) {alert(11);        Ext.Ajax.request({            url : appName + itsmTicketWp.action                    + '?act=saveOrUpdateWorkPolling',            params : {                itsmWorkPolling : Ext.encode(record.data)            },            success : function() {                itsmTicketWp.gridList.store.commitChanges();                //itsmTicketWp.gridList.store.reload();                Ext.getCmp(itsmTicketWp.idHead + 'itemAdd').enable();            }        });    },    canceledit : function(roweditor, changes, record, rowIndex) {        var r = itsmTicketWp.gridList.getSelectionModel().getSelected();        if (r.get('id') == null || r.get('id') == "")            itsmTicketWp.gridList.store.remove(r);        else            itsmTicketWp.gridList.store.rejectChanges();        Ext.getCmp(itsmTicketWp.idHead + 'itemAdd').enable();    }});// 巡检项GriditsmTicketWp.gridList = new Ext.grid.EditorGridPanel({    region : 'center',    loadMask : true,    autowidth : true,    height : 300,    viewConfig : {        forceFit : true    },    store : itsmTicketWp.storelist, // storecheck,    cm : itsmTicketWp.cmlist,    sm : new Ext.grid.RowSelectionModel({        singleSelect : false    }),    plugins : [ itsmTicketWp.editor ],    tbar : [ '->', {        id : itsmTicketWp.idHead + 'itemAdd',        text : '增加',        handler : onItemAdd,        iconCls : 'page_add',        disabled : false    }, '-', {        id : itsmTicketWp.idHead + 'itemDelete',        text : '删除',        handler : onItemDelete,        iconCls : 'page_delete',        disabled : true    } ]});


itsmTicketWp.editor的 afteredit 事件有时能触发 ,有时又不能触发 ,找了好久也没找到是什么原因,网上的用法 好像也是这样的用的,不知道在家有没有遇过这样的情况

------解决方案--------------------------------------------------------
不清楚 是不是浏览器不同导致的
------解决方案--------------------------------------------------------
没有触发的时候有什么错误信息没有?
------解决方案--------------------------------------------------------
用火狐firebug调试一下,ie会把某些JS错误直接忽略掉的
------解决方案--------------------------------------------------------
这个监听afteredit 按你的逻辑只会做更新操作,需要加入一个判断值用来判断是否是新增.不然你后台的逻辑写的有点麻烦.当你点新增按钮的时候,如果你后台的操作是saveOrUpdate就会在数据库新加一条记录或者覆盖以前的记录.这个可是你是说的有时有效 ,有时无效的结果.如果我猜的没错的话,你就要改改这个地方了.
  相关解决方案