0

您好我只想填充选择或组合框。我可以使用 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 脚本。或者你有其他更好的建议吗?

克莱门特

4

1 回答 1

0

QueryFilter 您可以在此 jsfiddle中创建一个as来实现您想要的,但拥有两个数据项可能更简单。您的原始模型可能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;
}

截屏。在我的示例中,奇数批次项目为空。

在此处输入图像描述

于 2013-05-02T13:03:52.310 回答