将过滤条件添加到Dojo ComboBox

时间:2014-01-30 04:25:02

标签: combobox dojo

我有一个dijit / form / ComboBox控件,它有一个JsonStore作为对象存储。

// Prepare the datasource for combobox
settings.JsonStore = new JsonRestStore({ target: settings.dataUrl });
settings.ObjectStore = new ObjectStore({ objectStore: settings.JsonStore });

var ComboBox = new ComboBox({
    id: settings.id,
    name: settings.id,
    value: settings.value,
    style: {
        width: settings.width.value + 'px',
        display: (settings.visible) ? 'visible' : 'none'
    },
    maxHeight: settings.dropHeight.value,
    store: settings.ObjectStore,
    searchAttr: settings.comboValue,
    labelType: "html",
    labelFunc: function (item, store) {
        var labelText = '....';
        return labelText;
    },
    onChange: function (evt) {
    }
}

当我尝试查询组合框时,会发出以下http请求:

http://<settings.dataUrl>/?<settings.comboValue>?A*
http://<settings.dataUrl>/?<settings.comboValue>?AB*

我想知道是否可以根据另一个控件的值在组合框上添加过滤器。例如:

http://<settings.dataUrl>/?CustomerNo=0001&<settings.comboValue>?AB*

我已经尝试过以下操作,当尝试通过更改URL更改过滤器时,我尝试更改组合框的存储。但它不起作用。我试图通过再次设置商店值来重置商店,这会导致错误。

1 个答案:

答案 0 :(得分:1)

我终于能够通过另一个问题here得到答案。

Combobox.set( 'query', { 'CustomerNo' : dijit.byId('<Customer control ID>').getValue() } );

查询变为:

http://<settings.dataUrl>/?CustomerNo=0001&<settings.comboValue>?AB*