EXTjs 4.2.1 加载网格数据时显示默认数据

Posted

技术标签:

【中文标题】EXTjs 4.2.1 加载网格数据时显示默认数据【英文标题】:EXTjs 4.2.1 Display default data while loading grid data 【发布时间】:2014-02-19 15:04:46 【问题描述】:

我正在使用 EXTjs 4.2,我想知道是否有任何方法,使用 LoadMask 或其他机制,在执行向上/向下滚动操作和网格时向网格的行显示默认值需要加载信息而不是显示网格的空块或加载消息。

因此,例如,向下滚动后会显示如下内容:

|      Column 1      |     Description     |
--------------------------------------------
| value 1            | value 2             |
| value 3            | value 4             |
| value 5            | value 6             |
| loading data...    | loading data...     |
| loading data...    | loading data...     |
| loading data...    | loading data...     |

然后,当信息被加载时,它会像往常一样显示接收到的值:

|      Column 1      |     Description     |
--------------------------------------------
| value 1            | value 2             |
| value 3            | value 4             |
| value 5            | value 6             |
| value 7            | value 8             |
| value 9            | value 10            |
| value 11           | value 12            |

我已经使用“正在加载数据...”信息手动插入所有这些行并在收到响应时替换它,但这需要使用特定代码来管理请求和存储这就是为什么我正在寻找 EXTjs 库提供的解决方案(如果存在)。谢谢。

【问题讨论】:

【参考方案1】:

根据您的信息,您似乎是一次加载每条记录,然后填充您获得的值,而不是加载所有商店记录。

您的解释似乎很完美,唯一的问题是当您收到回复时,您要更新哪条记录?如果这是您的问题,请在 ajax 请求的成功回调中发送记录并将其用于更新

举例

var newAddedRecord = mystore.add(Column:'loading data...', Description:'loading data...');

Ext.Ajax.request(
    url: 'url to post',
    method: 'POST',
    scope: this,
    success:function(request,options)
    
        successCallback(request,options,this, newlyAddedRecord);
    ,
    failure: handleFailure,
    params: parameters //Any parameters that needs to be passed in request
);

在成功回调函数中

successCallback: function(request, options, scope, newlyAddedRecord) 
  var jsonData = Ext.JSON.decode(request.responseText); //or the way your data is returned

  newlyAddedRecord.set('Column', jsonData.column);   
  newlyAddedRecord.set('Description', jsonData.description);
  newlyAddedRecord.commit();

【讨论】:

谢谢@objectone。是的,我现在就是这样做的。因此,管理结果我可以手动覆盖默认的“正在加载数据...”信息。我只是想知道这样的东西可能已经在 EXTjs 库中本地实现了(类似于 proxy.setDefaultRowData(['Loading data...', 'Loading data...']);) 但它看起来不是:(

以上是关于EXTjs 4.2.1 加载网格数据时显示默认数据的主要内容,如果未能解决你的问题,请参考以下文章

在激活 extjs 4 时清除可编辑的网格单元

Extjs 加载掩码

Ext JS 网格面板:如何在鼠标悬停时显示内容

在 extjs 网格视图中显示文本框

Extjs4-在加载网格后为列提供默认排序

extjs 组合框在单击时显示空白列表