在EXT JS中使用Rowexpander时,如何将Ext.XTemplate保存到DOM中

时间:2016-12-23 20:05:07

标签: javascript extjs

我的Ext.grid.Panel组件中的RowExpander插件存在一个奇怪的问题。仅供参考此网格由Ext.data.BufferedStore组件支持,以通过REST Api传递数据

因此,当用户单击展开按钮时,我将动态加载Ajax中的值,该行将打开并使用expandbody事件方法进行Ajax调用。

没有问题,效果很好。

问题在于,当我向下滚动页面时,打开的表行将丢失所有其他数据。

这是我的设置:

// Create Basic Ext Grid
    var oDataGrid = Ext.create('Ext.grid.Panel', {
        title: 'oData Entity Table',
        store: oDataStore,
        height: 450,
        id: 'odataGrid',
        loadMask: true,
        plugins: [{
            ptype: 'rowexpander',
            enableCaching: false,
            id: 'odataTableRowPlugin',

            rowBodyTpl: new Ext.XTemplate('<div id="oData-Inner-Table-Row-{Id}" ><button class="btn btn-warning"><span class="glyphicon glyphicon-refresh glyphicon-refresh-animate"></span> Loading...</button></div>')
        }],
        viewConfig:{
          listeners:{
              expandbody: function(__rowNode, __record, __expandRow, __eOpts){ 

              var _rowId = __record.get('Id');
              var _targetId = 'oData-Inner-Table-Row-' + _rowId;
              var _finalUrl = _that._URLROOT +'/odata/' + _that._ENTITYTYPE;

              var _qb = new OData.QueryBuilder(_finalUrl);
              var _type = OData.INT32;
              var _operator = OData.EQUALS;
              var _filter = 'Id';

              _qb.addWhereFilter('id_'+_rowId, _type, _filter, _operator, _rowId);
              var _query = _qb.generateQueryUrl();

              // Include Expand NavProps
              _query = _query + _that.createExpandedUrl();

              _that.grabEntityObject(_query,_targetId);
            }
          }

        },

        renderTo: 'oData-grid'
    });

所以即使行已更新,信息似乎也没有保存到dom中。

有任何想法线索,建议等吗?

0 个答案:

没有答案