我有一个引用商店的网格如下:
var s_store = new Ext.data.ArrayStore({
root: 'map',
autoLoad: True,
...
idProperty:'businessResults',
url : '....',
fields: someRecord
});
var s_grid= new Ext.grid.EditorGridPanel ({
store: s_store,
id: 's_grid',
title:'Involvement',
header: true,
....
});
});
商店从数据库加载数据记录
我面临的问题是,虽然数据库没有返回任何行 - 但是商店似乎显示Count为1(该行为空行)。
这会导致网格也显示一个emtpy行。
服务器的响应如下:
HTTP/1.1 200 OK
Date: Fri, 07 Feb 2014 03:41:12 GMT
Content-Length: 50
X-Powered-By: Servlet/2.5 JSP/2.1
{"map": [
[
"businessResults",
{}
]
]}
为什么会发生这种情况 - 我该如何预防呢? 我正在使用extJs 3.4
答案 0 :(得分:0)
我没有正确理解,但我对此问题有一个建议。 JsonStore
中有一个属性totalProperty
。此属性跟踪Json数组的返回值。所以,你可以把一个计数器放在返回值中,如下所示:
// here is the count variable holding the total value of the array
$invoicesData = array("success" => true, "count" => $num, "invoices" => array());
return json_encode($invoicesData);
然后,在您的商店定义中:
var invoiceStore = new Ext.data.JsonStore({
root: 'invoices',
totalProperty: 'count',
successProperty: 'success',
proxy: new Ext.data.HttpProxy({
url: 'your-server-url',
method: 'POST'
}),
fields: ['CustomerName', 'StoreName',
{name: 'StoreNo', type: 'int'},
{name: 'invoiceId', type: 'int'}
],
idProperty: 'invoiceId'
});
答案 1 :(得分:0)
由于您已将“map”设置为商店的root属性,而在“map”下,您将有一个空的记录,将以网格显示。
{"map": [
[
"businessResults",
{}
]
]}
应该是这样的:
{"map": [
]}
或者如果记录在此对象下,则应将store的root属性设置为“businessResults”。
最佳!!