dojo JsonRest获取值以动态地馈送网格标头

e7arh2l6  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(195)

我正在使用一个Dojo网格,我需要用JsonRest填充它。
这是密码:

require 
    (
        [ 'dojo/_base/lang', 'dojox/grid/DataGrid', 'dojo/data/ObjectStore', 'dojo/store/JsonRest', 'dojo/dom', 'dojo/domReady!' ],
        function ( 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":"Facilities","strategycompliantflag":"GROUP_STRATEGY_NA"},
{"strategyid":"1","strategyname":"Panel","strategycompliantflag":"GROUP_STRATEGY_NA"},
{"strategyid":"0","strategyname":"Agreem.","strategycompliantflag":"GROUP_STRATEGY_NA"}

--等等
我的目标是在网格的头中放入strategyname字段的值,在行中放入strategyid字段的值,但我似乎不知道如何实现,相反,我只在头中放入一列,如下所示:

-------------
strategyname
-------------
1  
0  
1

我希望

------ ------------- -------   ----
AR      Facilities     Panel    Agreem
------  ------------ --------  --------
1         0             1       0

为此,我认为可以在数据集合的循环中查询JsonRest,以形成所需的结构并将其传递给网格。
有人能帮帮我吗?

hsvhsicv

hsvhsicv1#

看起来您使用的是dojo 1.7+,因此您可以从摆脱对dojo全局(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/
Pidoss.:我把你的JsonRestStore换成了小提琴里的MemoryStore“memStore”。

相关问题