您好我只想填充select或comboBox。 我能够将searchAttr填充到JSON中的任何字符串。但是当存在空值时则不是这样。
JSON字符串:
[{"batch":"0000001000"},{"batch":"0000"},{"batch":""},{"batch":null}]
道场代码:
var selBatch = new ComboBox //located at the left side of the page and it is the second select box in a row
(
{ id:'ID_selBatch',
value:'',
searchAttr:'batch',
placeHolder:'Select...',
style:{width:'150px'},
}, 'node_selBatch'
);
on(selTest, 'change', function(valueCard)
{
var selectedTest = this.get('displayedValue');
var selBatch = registry.byId('ID_selBatch');
console.debug('Connecting to gatherbatches.php ...');
request.post('gatherbatches.php',
{ data:{nameDB:registry.byId('ID_selPCBA').value, nameCard : valueCard},
handleAs: "json"}).then
(
function(response)
{
var memoStore2 = new Memory({data:response});
selBatch.set('store', memoStore2);
selBatch.set('value','');
console.debug('List of batches per Test is completed! Good OK! ');
},
function(error)
{
alert("Batch's Error:"+error);
console.debug('Problem: Listing batches per Test in select Test is BAD!');
}
);
selBatch.startup();
});
错误:
TypeError: _32[this.searchAttr] is null
defer() -> _WidgetBase.js (line 331)
_3() -> dojo.js (line 15)
_f.hitch(this,fcn)(); -> _WidgetBase.js (line 331)
请注意,虽然在选择框中填充空值可能很奇怪,但这些空值与数据库中其他列中的数据相关,因此包含空值以便稍后可以应用mysql脚本。或者你还有其他更好的建议吗?
克莱门特
答案 0 :(得分:0)
您可以创建QueryFilter
as in this jsfiddle来实现您的目标,但拥有两个数据项可能更简单。您的原始模型可能具有null
batch
属性,以及您传递给ComboBox
使用的商店的模型。
但无论如何,这可行:
function createQueryFilter(originalQuery, filter) {
return function () {
var originalResults = originalQuery.apply(this, arguments);
var results = originalResults.filter(filter);
return QueryResults(results);
};
}
和
var memoStore = new Memory({
data: data
});
memoStore.query = createQueryFilter(memoStore.query, function (item) {
console.log(item);
return !!item.batch;
});
和虚拟数据:
function createData1() {
var data = [];
for (var i = 0; i < 10; i++) {
data.push({
name: "" + i,
batch: (0 === i % 2) ? "batch" + i : null
});
}
return data;
}
截图。在我的示例中,奇数编号的批处理项为空。