日期:2014-05-17  浏览次数:20709 次

小女子请问一个 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();
    }
});
// 巡检项Grid
itsmTicketWp.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就会在数据库新加一条记录或者覆盖以前的记录.这个可是你是说的有时有效 ,有时无效的结果.如果我猜的没错的话,你就要改改这个地方了.