日期:2014-05-16  浏览次数:21062 次

ExtJs 如何接受 Dwr回调得到的数据 作为数据源 root=""? - Web 开发 / Ajax
我是ExtJs的新手, 请教一下各位前辈, 最近在做Spring + Hibernate + ExtJs + dwr 的整合 单表操作
一开始准备做个grid展示下 单表的数据: 用dwr获得后台service的数据
Java code

public List findAll() { //这是后台数据
 return bookDAO.findAll();
}


接下来我就在js文件中这样写
JScript code

Ext.onReady(function(){

    getBook.findAll(callBackResult);
    
    function callBackResult(_data){
        function formatDate(value){
            return value ? value.dateFormat('M d,Y') :'';
        };
        var fm = Ext.form, Ed = Ext.grid.GridEditor;
        var ds = new Ext.data.Store({
            proxy: new Ext.data.MemoryProxy(eval(_data)),
            reader: new Ext.data.JsonReader({root:'Book'},[
                {name: 'bookId'},  
                {name: 'bookName'},  
                {name: 'pubType'},
                {name: 'price'}
            ])
        });
        var cm = new Ext.grid.ColumnModel([
            {id: 'bookId', header: "BOOKID", dataIndex: 'bookId',  width: 200, align: 'center'},
            {header: "BOOKNAME", dataIndex: 'bookName', width: 100, align: 'center', editor: new Ed(new fm.TextField({allowBlank: false}))},
            {header: "PUBDATE", dataIndex: 'pubDate', width: 100, align: 'center', editor: new Ed(new fm.DateField({format:'m/d/y', minValue:'01/01/06',disabledDays: [0, 6],disabledDaysText: 'Plants are not available on the weekends'}))},
            {header: "PRICE", dataIndex: 'price', width: 100, align: 'center', editor: new Ed(new fm.TextField({allowBlank: false}))}
        ]);
        cm.defaultSortable = true;
        var sm=new Ext.grid.RowSelectionModel();
        
        var grid = new Ext.grid.Grid('editor-grid', {
            ds: ds,
            cm: cm,
            selModel: sm,
            autoSizeColumns: true,
             monitorWindowResize: false,
             trackMouseOver: true
        });
        grid.render();
        ds.load();
        
    }
});



问题就来了 数据无法展示 主要是root不知道该怎么写 希望大家能帮助我, 觉得我发的不够详细 请指出来我会进行修改

------解决方案--------------------
把:
 var ds = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(eval(_data)),
reader: new Ext.data.JsonReader({root:'Book'},[
{name: 'bookId'},
{name: 'bookName'},
{name: 'pubType'},
{name: 'price'}
])
});
换成:
var ds = new Ext.data.JsonStore({
data: eval(_data),
fields: ['bookId', 'bookName', 'pubType', 'price'] 
});

------解决方案--------------------
既然用了DWR将数据异步获取到了 还Proxy干嘛 
直接simpleStore将数据加载至grid中即可 相当于grid加载假数据~~~