Ext JS - 根据第一个网格中的行选择在第二个网格中加载值

Posted

技术标签:

【中文标题】Ext JS - 根据第一个网格中的行选择在第二个网格中加载值【英文标题】:Ext JS - loading values in second grid based on row selection in first grid 【发布时间】:2016-02-27 05:18:42 【问题描述】:

我有 2 个网格...在第一个网格中,我展示了一些细节,但第二个网格将为空。当我在第一个网格中选择任何行时,第二个网格必须根据第一个网格中的行值显示值。

对于第一个网格,

Ext.define('Admin.view.report004.Dashboard400',
 
     alias: 'widget.report004.list400',
     itemId: 'dashboard400',

     title : 'Summary By Bank',
     stripeRows: true,
     border: true,
     loadMask: 
         msg: 'Please wait..'
     ,
     extend: 'Ext.grid.GridPanel',

     layout : 'fit',       
     bodyPadding: 10,
     title: bundles.getLocalizedString('summary_by'),
     store: report004Store,
     features: [
         ftype: 'summary'
     ],
     columns: [

         id: 'report004CustomerName', header: bundles.getLocalizedString('customer_name'),
             width: 150, sortable: false, hidden: false,
             dataIndex: 'customerName',
             align:'left',
             summaryRenderer: function(value, summaryData, dataIndex) 
                 return '<b>Totals</b>';
             
         ,
         id: 'report004Count', header: bundles.getLocalizedString('count'),
             width: 150, sortable: false, hidden: false,
             dataIndex: 'count',
             align:'left'
         ,

     ]
 );

对于网格 2,

 Ext.define('Admin.view.report004.Dashboard401',
 
     alias: 'widget.report004.list100',
     itemId: 'dashboard401',

     title : 'By Specific Dataset',
     stripeRows: true,
     border: true,
     loadMask: 
         msg: 'Please wait..'
     ,
     extend: 'Ext.grid.GridPanel',
     layout : 'fit',
     bodyPadding: 10,

     title: bundles.getLocalizedString('xxx'),
     store: dashboard_401,
     features: [
         ftype: 'summary'
     ],
     columns: [
         
             id: 'name2', header: bundles.getLocalizedString('name'),
             width: 200, sortable: false, hidden: false,
             dataIndex: 'name',
             summaryRenderer: function(value, summaryData, dataIndex) 
                 return '<b>Totals</b>';
                             
         ,
         id: 'companyPaidCount2', header: bundles.getLocalizedString('paid_count'),
             width: 150, sortable: false, hidden: false,
             dataIndex: 'companyPaidCount',xtype: 'numbercolumn', format : '0,000',
             align:'right',
             summaryType: 'sum',
             summaryRenderer: function(value, summaryData, dataIndex)
                 return "<b>" + value + "</b>";

             

     ]
 );

请帮我解决这个问题..

【问题讨论】:

【参考方案1】:

使用选择监听器 为您的第一个网格。 grid select listener

Ext.define('Admin.view.report004.Dashboard400', 
    alias: 'widget.report004.list400',
    itemId: 'dashboard400',

    title: 'Summary By Bank',
    stripeRows: true,
    border: true,
    loadMask: 
        msg: 'Please wait..'
    ,
    extend: 'Ext.grid.GridPanel',

    layout: 'fit',
    bodyPadding: 10,
    title: bundles.getLocalizedString('summary_by'),
    store: report004Store,
    features: [
        ftype: 'summary'
    ],
    listeners: 
        select: function(grid, record, index) 
            Ext.Ajax.request(
                url: 'page.php',
                params: 
                    id: record.get("id")
                ,
                success: function(response) 
                    var data = Ext.decode(response.responseText);
                    dashboard_401.loadData(data);
                
            );
        
    ,
    columns: [

        
            id: 'report004CustomerName',
            header: bundles.getLocalizedString('customer_name'),
            width: 150,
            sortable: false,
            hidden: false,
            dataIndex: 'customerName',
            align: 'left',
            summaryRenderer: function(value, summaryData, dataIndex) 
                return '<b>Totals</b>';
            
        , 
            id: 'report004Count',
            header: bundles.getLocalizedString('count'),
            width: 150,
            sortable: false,
            hidden: false,
            dataIndex: 'count',
            align: 'left'
        ,

    ]
);

【讨论】:

以上是关于Ext JS - 根据第一个网格中的行选择在第二个网格中加载值的主要内容,如果未能解决你的问题,请参考以下文章

在 ExtJs 4.1 中使用一个网格作为分组网格和普通网格

放置在 tabcontrol 的第二个 tabitem 中的数据网格的 WPF-'Index out of Range' 错误(但如果放置在第一个 tabitem 中,它工作正常)

JS 根据数据属性选择显示选项

如何根据第一个 GridViewComboBoxColumn 的选择填充第二个列

ExtJs双击网格行应该将项目移动到另一个网格

如何只选择第二个表中的行?