是否有可能将dojo dgrid指向同一个休息商店&查询作为过滤选择?

时间:2013-09-04 09:13:35

标签: dojo

当然应该可以对同一个商店发出相同的查询来填充dGrid(或任何其他形式的网格)以及具有相同行的filteringSelect中的下拉列表。

然而,看起来filterSelect需要表单

的响应
{
    "identifier": "abbreviation",
    "label": "name",
    "items": [
        { "abbreviation": "AL", "name": "Alabama" },
        { "abbreviation": "AK", "name": "Alaska" },

        { "abbreviation": "WY", "name": "Wyoming" }
    ]
}

and the dgrid needs 
[
        { "abbreviation": "AL", "name": "Alabama" },
        { "abbreviation": "AK", "name": "Alaska" },

        { "abbreviation": "WY", "name": "Wyoming" }
]

来自商店的标识符和标签属性似乎是完全超级的,因为您通过身份API获取标识符,并且在任何情况下,您可以在实例化过滤选择时指定所有内容。

是的我知道有解决方法 - 我可以使用两个不同的存储或查询,并让服务器端生成基于查询中的某些参数生成这两者。但是,如果我这样做,当我通过dgrid进行更改时,更改是否会正确传播?或者我可以使用将额外字段放在响应前面的东西包装商店API,并将包装的商店传递给filteringselect,但有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

使用您的阵列创建数据存储,如:

var store = Observable(new Memory({ 
    idProperty: "abbreviation", 
    data: [ { 
        "abbreviation": "AL", "name": "Alabama" 
    }, { 
       "abbreviation": "AK", "name": "Alaska" 
    }, { 
      "abbreviation": "WY", "name": "Wyoming" 
    }]
 }));

然后,您可以将此商店设置为dgrid:

dgrid.set('store', store);

对于您的filteringSelect,您可以将此商店设置为

new FilteringSelect({ 
    searchAttr:"name", 
    store: store 
});