0

我知道还有像我这样的问题,但细节对我来说很重要,而且这个问题的细节与已经提出的问题不同。但是问题是我正在尝试使用 extjs 构建一个新窗口,从已经完成的网格开始。这个新窗口应该包含一个网格,其中包含对前一个网格中所选元素的所有引用。所以这是我的解决方案,我在第一个网格内放置了一个 ajax 调用。我制作了一个列来包含要单击以进入第二个网格的图像。但它不起作用。当我点击图片时它什么都不显示?

我做 ajax 调用错了吗?我是否错误地将 json 传递到页面以存储应该在新窗口中的网格?任何想法?这是我的网格的代码:

 var grid = Ext.create('Ext.grid.Panel', {
    store: store1,
    stateful: true,
    collapsible: true,
    multiSelect: true,
    stateId: 'stateGrid',
    columns: [
        {
            text     : 'id',
            flex     : 1,
            sortable : true,
            dataIndex: 'id'
        },
        {
            text     : 'buyer_member_id',
            width    : 75,
            sortable : true,
            dataIndex: 'buyer_member_id'
        },
        {
            text     : 'Client Name',
            width    : 200,
            sortable : true,
            dataIndex: 'name'
        },
        {
            xtype : 'actioncolumn',
            width : '5%',
            sortable : false,
            items : [{
                icon : '../static/accept.gif',
                tooltip : 'See Admants',
                handler : function(grid, rowIndex, colIndex){
                    var row = grid.getStore().getAt(rowIndex);
                    buyer_member_id = grid.getSelectionModel.getSelection()[1]
                    Ext.Ajax.defaultHeaders = {
                        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
                    };
                    Ext.Ajax.request({
                        method : "GET",     
                        url: '/mygrid/',
                        params:{
                                buyer_member_id: buyer_member_id,
                        },
                        success : function(response) {
                            var obj = response;
                            try {
                                obj = Ext.decode(response.responseText);
                            } catch (error) {}
                            if (obj) {
                                Ext.create('Ext.window.Window', {
                                title: 'Hello',
                                height: 200,
                                width: 400,
                                layout: 'fit',
                                items: {  // Let's put an empty grid in just to illustrate fit layout
                                xtype: 'grid',
                                border: false,
                                columns: [
                                        {
                                            text     : 'id',
                                            flex     : 1,
                                            sortable : true,
                                            dataIndex: 'id'
                                        },
                                        {
                                            text     : 'name',
                                            width    : 300,
                                            sortable : true,
                                            dataIndex: 'name'
                                        }],                 // One header just for show. There's no data,
                                store: new Ext.data.JsonStore({
                                    // store configs
                                    storeId: 'myStore',
                                    proxy: {
                                        type: 'ajax',
                                        url: '/admants/',
                                        reader: {
                                            type: 'json',
                                        }
                                    },})

                                }}).show();
                            } else {
                            alert("Invalid response")
                            }
                        },
                        failure : function(response) {
                            alert("Data request failed");
                        }
                    }); 
                }
            }]
        }
    ],
4

1 回答 1

0

下面的代码会打开一个新窗口并读取 ajax 调用的数据。Stil“商店”不起作用,但我会专门针对它发布一个新问题。

{
            xtype : 'actioncolumn',
            width : '5%',
            sortable : false,
            items : [{
                icon : '../static/accept.gif',
                tooltip : 'See Admants',
                handler : function(grid, rowIndex, colIndex){
                    var row = grid.getStore().getAt(rowIndex);
                    //buyer_member_id = grid.getSelectionModel.getSelection()[1]
                     var row = grid.getStore().getAt(rowIndex);
                     var buyer_member_id = row.data.buyer_member_id;
                    Ext.Ajax.defaultHeaders = {
                        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
                    };
                    Ext.Ajax.request({
                        method : "GET",     
                        url: '/admants/?buyer_member_id='+ buyer_member_id,
                        success : function(response) {
                            var obj = response;
                            try {
                                obj = Ext.decode(response.responseText);
                            } catch (error) {}
                            if (obj) {
                                Ext.create('Ext.window.Window', {
                                title: 'Hello',
                                height: 200,
                                width: 400,
                                layout: 'fit',
                                items: {  // Let's put an empty grid in just to illustrate fit layout
                                xtype: 'grid',
                                border: false,
                                columns: [
                                        {
                                            text     : 'id',
                                            flex     : 1,
                                            sortable : true,
                                            dataIndex: 'id'
                                        },
                                        {
                                            text     : 'name',
                                            width    : 300,
                                            sortable : true,
                                            dataIndex: 'name'
                                        }],                 // One header just for show. There's no data,
                                store: new Ext.data.JsonStore({
                                    // store configs
                                    storeId: 'myStore',
                                    proxy: {
                                        type: 'ajax',
                                        url: '/admants/',
                                        reader: {
                                            type: 'json',
                                        }
                                    },})

                                }}).show();
                            } else {
                            alert("Invalid response")
                            }
                        },
                        failure : function(response) {
                            alert("Data request failed");
                        }
                    }); 
                }
            }]
        }
    ],
于 2013-09-16T12:17:33.750 回答