Model view controller Ext js summaryRenderer函数未调用 这是我的观点 Ext.define('view.OrdersGrid'{ 扩展:“Ext.grid.Panel”, 别名:“widget.ordersgrid”, 商店:“售票员”, 特点:[ { ftype:'groupingsummary', groupHeaderTpl:[ “{[values.rows[0].data.EventName]}—{[values.rows[0].data.EventDate]}”, ], //hideGroupedHeader:为true, //可折叠:错误, remoteRoot:'记录', //showSummaryRow:对, } ], initComponent:函数(){ var me=这个; me.on('edit',函数(editor,e){ me.getSelectionModel().select(e.record); me.firevent('onEdit',e.record); }); me.selModel.on('select',函数(t、记录、索引、eOpts){ me.fireEvent('onRecordSelected',record); }); me.selModel.on('deselect',函数(t、记录、索引、eOpts){ me.fireEvent('onRecordSelected',record); }); 我是专栏作家= [ { id:“订单”, 文本:“订单Id”, 可排序:是的, 数据索引:“TOId”, 隐藏:真的 }, { 文本:“订单号”, 弹性:1.5, 可排序:是的, dataIndex:'OrderNumber', 渲染器:函数(值、元数据、记录){ if(record.get('OrderStatus')==3{//error orders 返回值+“”; } 否则{ 返回值; } } }, { 文本:“事件”, 弹性:3, 可排序:是的, dataIndex:'EventName', 隐藏:是的, //summaryType:“sum”, 渲染器:函数(值、元数据、记录){ 返回值+”(“+record.get('TicketCount')+”); } }, { 文字:“价格”, 弹性:1, 可排序:是的, 数据索引:“总费用”, //summaryType:“sum”, //渲染器:函数(值、汇总数据、数据索引){ //调试器; //返回parseInt(值); // } summaryRenderer:函数(值、元数据、记录){ 调试器; 返回Ext.String.format( “总计:{0}”, Ext.Number.toFixed(值) ); } } ]; this.callParent(参数); },//end init函数 插件:[ Ext.create('Ext.grid.plugin.RowEditing'{ }) ],//端插件 } ); 这是我的模型 Ext.define('model.TicketOrder'{ 扩展:“Ext.data.Model”, 字段:[ “TOId”, “订单号”, “EventName”, “票务账户”, { 名称:'总费用', 键入:“int” } ], idProperty:“TOId”, 代理:{ //如果跨域中的数据与跨域中的数据位于同一个域中,请使用脚本标记进行加载 //在这个页面上,HttpProxy会更好 键入:“ajax”, disableCaching:true, url:'WebService.asmx/GetTicketOrdersByUserId?userId='+Utilities.userId, 读者:{ 根:'命令', totalProperty:“totalCount” }, //将单个排序作为多参数发送 simpleSortMode:true } }); 这是我的商店 Ext.define('store.tickerders'{ 扩展:“Ext.data.Store”, 模型:“model.TicketOrder”, 自动加载:false, remoteSort:false, 页面大小:50, groupField:'EventOriginalId' });

Model view controller Ext js summaryRenderer函数未调用 这是我的观点 Ext.define('view.OrdersGrid'{ 扩展:“Ext.grid.Panel”, 别名:“widget.ordersgrid”, 商店:“售票员”, 特点:[ { ftype:'groupingsummary', groupHeaderTpl:[ “{[values.rows[0].data.EventName]}—{[values.rows[0].data.EventDate]}”, ], //hideGroupedHeader:为true, //可折叠:错误, remoteRoot:'记录', //showSummaryRow:对, } ], initComponent:函数(){ var me=这个; me.on('edit',函数(editor,e){ me.getSelectionModel().select(e.record); me.firevent('onEdit',e.record); }); me.selModel.on('select',函数(t、记录、索引、eOpts){ me.fireEvent('onRecordSelected',record); }); me.selModel.on('deselect',函数(t、记录、索引、eOpts){ me.fireEvent('onRecordSelected',record); }); 我是专栏作家= [ { id:“订单”, 文本:“订单Id”, 可排序:是的, 数据索引:“TOId”, 隐藏:真的 }, { 文本:“订单号”, 弹性:1.5, 可排序:是的, dataIndex:'OrderNumber', 渲染器:函数(值、元数据、记录){ if(record.get('OrderStatus')==3{//error orders 返回值+“”; } 否则{ 返回值; } } }, { 文本:“事件”, 弹性:3, 可排序:是的, dataIndex:'EventName', 隐藏:是的, //summaryType:“sum”, 渲染器:函数(值、元数据、记录){ 返回值+”(“+record.get('TicketCount')+”); } }, { 文字:“价格”, 弹性:1, 可排序:是的, 数据索引:“总费用”, //summaryType:“sum”, //渲染器:函数(值、汇总数据、数据索引){ //调试器; //返回parseInt(值); // } summaryRenderer:函数(值、元数据、记录){ 调试器; 返回Ext.String.format( “总计:{0}”, Ext.Number.toFixed(值) ); } } ]; this.callParent(参数); },//end init函数 插件:[ Ext.create('Ext.grid.plugin.RowEditing'{ }) ],//端插件 } ); 这是我的模型 Ext.define('model.TicketOrder'{ 扩展:“Ext.data.Model”, 字段:[ “TOId”, “订单号”, “EventName”, “票务账户”, { 名称:'总费用', 键入:“int” } ], idProperty:“TOId”, 代理:{ //如果跨域中的数据与跨域中的数据位于同一个域中,请使用脚本标记进行加载 //在这个页面上,HttpProxy会更好 键入:“ajax”, disableCaching:true, url:'WebService.asmx/GetTicketOrdersByUserId?userId='+Utilities.userId, 读者:{ 根:'命令', totalProperty:“totalCount” }, //将单个排序作为多参数发送 simpleSortMode:true } }); 这是我的商店 Ext.define('store.tickerders'{ 扩展:“Ext.data.Store”, 模型:“model.TicketOrder”, 自动加载:false, remoteSort:false, 页面大小:50, groupField:'EventOriginalId' });,model-view-controller,extjs,extjs3,extjs4.2,extjs-mvc,Model View Controller,Extjs,Extjs3,Extjs4.2,Extjs Mvc,我使用的是MVC架构,我在summaryRenderer视图中放置了一个调试器,但它没有执行,也没有显示任何摘要行,需要帮助吗。另外,请告诉我应该设置什么remoteRoot。在此处输入code取消注释'showSummaryRow:true'您将需要它。然后,对于您定义的每个列,您需要一个摘要,您将需要定义summaryRenderer:function(){…}和SummaryType:'sum'。EXTJS可能是一个真正的难题,尤其是当你想做一些自定义的事情时。注意额外的逗号(看起来你在功

我使用的是MVC架构,我在summaryRenderer视图中放置了一个调试器,但它没有执行,也没有显示任何摘要行,需要帮助吗。另外,请告诉我应该设置什么remoteRoot。
在此处输入code

取消注释'showSummaryRow:true'您将需要它。然后,对于您定义的每个列,您需要一个摘要,您将需要定义
summaryRenderer:function(){…}
SummaryType:'sum'
。EXTJS可能是一个真正的难题,尤其是当你想做一些自定义的事情时。注意额外的逗号(看起来你在功能部分有几个逗号)。尽量保持简单。祝你好运

This is my view
Ext.define('view.OrdersGrid', {
    extend: 'Ext.grid.Panel',
    alias: 'widget.ordersgrid',
    store: 'TicketOrders',
    features:[
        {
            ftype: 'groupingsummary',
            groupHeaderTpl: [
            '{[values.rows[0].data.EventName]}&nbsp;&mdash;&nbsp;<small class="muted">{[values.rows[0].data.EventDate]}</small>',
            ],
            //hideGroupedHeader: true,
            //collapsible: false,
            remoteRoot: 'record',
            //showSummaryRow: true,
        }
    ],

    initComponent: function () {
        var me = this;
        me.on('edit', function (editor, e) {
            me.getSelectionModel().select(e.record);
            me.fireEvent('onEdit', e.record);
        });
        me.selModel.on('select', function (t, record, index, eOpts) {

            me.fireEvent('onRecordSelected', record);
        });
        me.selModel.on('deselect', function (t, record, index, eOpts) {
            me.fireEvent('onRecordSelected', record);
        });

        me.columns =
        [
        {
            id: 'order',
            text: "Order Id",
            sortable: true,
            dataIndex: 'TOId',
            hidden: true
        },
        {
            text: "Order Number",
            flex: 1.5,
            sortable: true,
            dataIndex: 'OrderNumber',
            renderer: function (value, metadata, record) {
                if (record.get('OrderStatus') == 3) { // error orders

                    return value + "  <img src='images/icons/icon_question_mark.gif' title='" + record.get('Description') +  "'/>";
                }
                else {
                    return value;
                }

            }

        },
        {
            text: "Event",
            flex: 3,
            sortable: true,
            dataIndex: 'EventName',
            hidden: true,
            //summaryType: 'sum',
            renderer: function (value, metadata, record) {
                return value + "  ( " + record.get('TicketCount') + " )";
            }

        },
        {
            text: "Price",
            flex: 1,
            sortable: true,
            dataIndex: 'TotalCharges',
            //summaryType: 'sum',
            //renderer: function (value, summaryData, dataIndex) {
            //    debugger;
            //    return parseInt(value);
           // }
            summaryRenderer: function (value, metadata, record) {
                debugger;
                return Ext.String.format(
                         "Total: {0}",
                         Ext.Number.toFixed(value)
                 );

            }

       }
      ];

        this.callParent(arguments);

    }, // end init function


    plugins: [
        Ext.create('Ext.grid.plugin.RowEditing', {
        })
    ], //end plugins
}
);

This is my model

Ext.define('model.TicketOrder', {
    extend: 'Ext.data.Model',
    fields: [
    'TOId',
    'OrderNumber',
    'EventName',
    'TicketCount',
      {
          name: 'TotalCharges',
          type: 'int'

      }

    ],
    idProperty: 'TOId',

    proxy: {
        // load using script tags for cross domain, if the data in on the same domain as
        // this page, an HttpProxy would be better
        type: 'ajax',
        disableCaching: true,
        url: 'WebService.asmx/GetTicketOrdersByUserId?userId=' + Utilities.UserId,
    reader: {
            root: 'orders',
            totalProperty: 'totalCount'
        },
        // sends single sort as multi parameter
        simpleSortMode: true
    }
});

This is my store
Ext.define('store.TicketOrders', {
    extend: 'Ext.data.Store',
    model: 'model.TicketOrder',
    autoLoad: false,
    remoteSort: false,
    pageSize: 50,
    groupField: 'EventOriginalId'


});
功能:[
{
ftype:'groupingsummary',
groupHeaderTpl:[
“{[values.rows[0].data.EventName]}&mdash;{[values.rows[0].data.EventDate]}”,
],
//hideGroupedHeader:为true,
//可折叠:错误,
remoteRoot:'记录',
showSummaryRow:正确
}
],
features:[
    {
        ftype: 'groupingsummary',
        groupHeaderTpl: [
        '{[values.rows[0].data.EventName]}&nbsp;&mdash;&nbsp;<small class="muted">{[values.rows[0].data.EventDate]}</small>',
        ],
        //hideGroupedHeader: true,
        //collapsible: false,
        remoteRoot: 'record',
        showSummaryRow: true
    }
],