Json Rest获取值以动态提供网格头

时间:2013-08-09 11:44:10

标签: dojo grid

我正在使用dojo网格,我需要使用JsonRest填充

这是代码: 要求     (         ['dojo / _base / lang','dojox / grid / DataGrid','dojo / data / ObjectStore','dojo / store / JsonRest','dojo / dom','dojo / domReady!' ]         函数(lang,DataGrid,ObjectStore,JsonRest,dom)         {

        jsonr = new JsonRest
        (
            { target: 'carrierSlideListStrategiesByGroupOrCarrierAction.do?output=<%=Constants.OUTPUT_JSON%>' }

        );

        var layout =
        [
            [
                { 'name': 'strategyname', 'field': 'strategyid', 'width': '23%', 'cellStyles': 'white-space: nowrap;', 'headerStyles': 'white-space: normal; word-wrap: normal; text-align: center;' }              
            ]
        ];

        grid00 = new DataGrid 
        (
            {
                store: store00 = new ObjectStore ( { objectStore: jsonr } ),
                structure: layout,
                rowSelector: '20px'
            }
        );

        grid00.placeAt ( 'grid00' );
        grid00.startup ();
        dojo.connect 
        (
            grid00, 
            "_onFetchComplete",
            function ()
            {
                $ ( '#msg_home' ).empty ();
                $ ( '#msg_home' ).html ( '<table><tr><td><bean:message key="bodycarrierslidebygrouporcarrier.query.businessnumbers.done00"/>' + '<b>' + grid00.rowCount + '</b>' + '<bean:message key="bodycarrierslidebygrouporcarrier.query.done01"/></td></tr></table>' );
            }
        );
    }
);

我得到的数据收集如下:

[{ “strategyid”: “1”, “strategyname”: “AR”, “strategycompliantflag”: “GROUP_STRATEGY_NA”}, { “strategyid”: “0”, “strategyname”: “设施”, “strategycompliantflag”: “GROUP_STRATEGY_NA”}, { “strategyid”: “1”, “strategyname”: “面板”, “strategycompliantflag”: “GROUP_STRATEGY_NA”}, { “strategyid”: “0”, “strategyname”: “Agreem。”, “strategycompliantflag”: “GROUP_STRATEGY_NA”}

- 等

我的目标,我似乎不知道如何实现,是将字段策略名称的值放入网格标题中,并在行中添加字段策略的值,而不是我进入标题只有一列如下:


strategyname

1 0 1

我想拥有 ------ ------------- ------- ---- AR设施小组协议


1 0 1 0

要做到这一点我认为我可以在循环中查询JsonRest数据集合以形成我需要的结构并将其传递给网格 ¿有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

看起来你正在使用dojo 1.7+,所以你可以先摆脱对dojo global(dojo.connect等等)的所有调用,然后将其替换为AMD等价物。

对于您要实现的目标,您必须分两步完成:

首先,调用您的商店来获取数据,并使用以下内容创建您的布局:

var layout = array.map(yourJsonStore.query(), function (item) {
    return {
        name: item.strategyname,
        field: "strategycomplyantflag" + "_" + item.strategyname
     }
});

然后,模拟您的数据项以匹配布局中声明的字段名称,并将它们放在memoryStore中。

示例:

var transformedMemStore = new Memory({
    data: array.map(yourJsonStore.query(), function (item) {
        var obj = {};
        obj["id"] = item.strategyid;
        obj["strategycomplyantflag_" + item.strategyname] = item.strategycompliantflag;
        return obj;
     })
 });

最后,使用转换后的商店作为objectStore属性创建objectStore,并将其分配给您的网格。完整示例:http://jsfiddle.net/psoares/9MLT5/

P.S。 :我用小提琴中的MemoryStore“memStore”替换了你的JsonRestStore ......