0

私がやりたい操作は簡単ではありません。最初のグリッド(またはテーブル)と、最初のテーブルのすべての行にあるセルをクリックして生成された2番目のグリッドがあります。最初のテーブルのパラメーターを取得し、テーブルを生成する json の他のコンテンツを表示します。

2 番目のテーブルは最初のテーブルの列に含まれており、ajax 呼び出しによって作成されます。

Ext.create('Ext.window.Window' etc. etc.

問題は、最初のテーブルの行の名前を取得して、最初のテーブルの中にある2番目のテーブルの名前として使用したいということです。私はいくつかの有用なアドバイス ( 12 ) を見つけましたが、私の特定のケースではなく、「現在の」テーブルの作業です。誰でも助けることができますか?

私が使用するコードは以下のとおりですが、読むには非常に長いので、役に立つとは思えません。

// create the Grid
var grid = Ext.create('Ext.ux.LiveSearchGridPanel', {
    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);
                     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) {alert("Errore nella decodifica del file json");}
                            if (obj) { 
                                Ext.define('Admants', {
                                extend: 'Ext.data.Model',
                                fields: [
                                      {name: 'id',    type: 'int', convert: null,    defaultValue:undefined},
                                      {name: 'name',  type: 'string', convert:null,  defaultValue:undefined},
                                      {name: 'group', type: 'string', convert:null,  defaultValue:undefined}
                                ],
                                idProperty: 'id'
                                });
                                var groupingFeature = Ext.create('Ext.grid.feature.Grouping',{
                                        groupHeaderTpl: 'Group: {name} ({rows.length} Item{[values.rows.length > 1 ? "s" : ""]})'
                                });
                                var Admantstore = Ext.create('Ext.data.Store', {
                                        autoLoad: true,
                                        storeId: 'Admants',
                                        sorters: ['id', 'name','group'],
                                        groupField: 'group',
                                        fields: ['id','name','group'],
                                        data : obj,
                                        model: 'Admants',
                                        proxy: {
                                            type: 'memory',
                                            reader: {
                                                type: 'json',
                                                root: 'admants'
                                            }
                                        }
                                    });
                                Ext.create('Ext.window.Window', {
                                title: 'Admants', //this line has to be changed
                                height: 200,
                                width: 400,
                                layout: 'fit',
                                items: {  
                                xtype: 'grid',
                                border: false,
                                store: Admantstore,
                                features: [groupingFeature],
                                columns: [
                                        {
                                            text     : 'id',
                                            flex     : 1,
                                            sortable : true,
                                            dataIndex: 'id'
                                        },
                                        {
                                            text     : 'name',
                                            width    : 300,
                                            sortable : true,
                                            dataIndex: 'name'
                                        }],
                                }}).show();
                            } else {
                            alert("Invalid response");
                            }
                        },
                        failure : function(response) {
                            alert("Data request failed");
                        }
                    }); 
                }
            }]
        }
    ],
    height: 350,
    width: 600,
    title: 'Member Data Sharing',
    renderTo: 'grid-example1',
    viewConfig: {
        stripeRows: true,
        enableTextSelection: true
    }
});

});

4

1 に答える 1

0

次に、最初の(親)テーブルのストアのデータを使用し、すべての関数で使用できる変数に割り当てられた行を使用しました。これらは、トリックを行う2行です。

var row = grid.getStore().getAt(rowIndex);
var buyer_member_id = row.data.buyer_member_id;
var AdmantClient = row.data.name

次に、2 番目の (子) テーブル/グリッドのタイトルとして AdmantClient 変数を使用しました。これが役立つことを願っています。

于 2013-09-19T12:07:04.903 に答える