dgrid-无法将选择模式保持为“0”;“单一”;使用Dojo内存/对象存储作为存储时

dgrid-无法将选择模式保持为“0”;“单一”;使用Dojo内存/对象存储作为存储时,dojo,dgrid,Dojo,Dgrid,我无法将selectionMode保持为“单一”或“扩展”。 当我使用dojo内存/ObjectStore作为存储时,只会发生多行选择 require([ "dojo/_base/declare", "dojo/request", "dojo/data/ObjectStore", "dojo/store/Memory", "dgrid/OnDemandGrid", "dgrid/Keyboard", "dgrid/Selection

我无法将selectionMode保持为“单一”或“扩展”。 当我使用dojo内存/ObjectStore作为存储时,只会发生多行选择

    require([
    "dojo/_base/declare",
    "dojo/request",
    "dojo/data/ObjectStore",
    "dojo/store/Memory",
    "dgrid/OnDemandGrid",
    "dgrid/Keyboard",
    "dgrid/Selection",
    "dojo/DeferredList",
    "dojo/domReady!"
    ],
    function (declare, request, ObjectStore, Memory, OnDemandGrid, Keyboard, Selection, DeferredList) {

        var ddstore;


        claimDef = dojo.xhrGet({
            url: "pageToGetData.aspx",
            handleAs: "json",
            load: function (res) {
                // Resolve when content is received 
                ddstore = new Memory({ data: res });

            }
        });


        var defs = new dojo.DeferredList([claimDef]);
        defs.then(function (results) {
            // Create a new constructor by mixing in the components
            var CustomGrid = declare([OnDemandGrid, Keyboard, Selection]);

            claimAccountsGrid = new CustomGrid({
                columns: [
                { label: "Label1", field: "Field1" },
                { label: "Label2", field: "Field2" },
                { label: "Label3", field: "Field3" },
             ]

            }, "claimAccountsGrid");
            claimAccountsGrid.setStore(ddstore);


        });
    });
但是,当我对从该页面获得的相同数据进行硬编码时,我可以将默认的selectionMode设置为“extended”(扩展)


由于您没有显示实际数据,我无法100%确定,但如果您未能正确确保项目具有唯一标识符,就会发生这种情况(或者,如果标识符字段不是
id
,您忘记在内存存储上设置
idProperty
,以通知它要查看的字段)


另请参见

尝试此
ddstore=newobservable(新内存({data:res}))
为此,您需要将其作为
dojo/store/Observable
来要求。我希望它对你有用祝你好运!。谢谢你的回复。但是,使用dojo/store/Observable也不起作用。在dgrid文件夹中有一个测试文件夹checkout。这个文件夹可能是您找到任何有用解决方案的示例。
    require([
    "dojo/_base/declare",
    "dojo/request",
    "dojo/data/ObjectStore",
    "dojo/store/Memory",
    "dgrid/OnDemandGrid",
    "dgrid/Keyboard",
    "dgrid/Selection",
    "dojo/DeferredList",
    "dojo/domReady!"
    ],
    function (declare, request, ObjectStore, Memory, OnDemandGrid, Keyboard, Selection, DeferredList) {
        pageNo = 1;
        var ddstore;


        claimDef = dojo.xhrGet({
            url: "pageToGetData.aspx",
            handleAs: "json",
            load: function (res) {
                // Resolve when content is received 
                ddstore = //new Memory({ data: res });

                [
                { "Field1": "value1", "Field2": null, "Field3": "1" },
                { "Field1": "value2", "Field2": null, "Field3": "1"}
                ];
            }
        });


        var defs = new dojo.DeferredList([claimDef]);
        defs.then(function (results) {
            // Create a new constructor by mixing in the components
            var CustomGrid = declare([OnDemandGrid, Keyboard, Selection]);

            claimAccountsGrid = new CustomGrid({
                columns: [
                { label: "Label1", field: "Field1" },
                { label: "Label2", field: "Field2" },
                { label: "Label3", field: "Field3" },
             ]
            }, "claimAccountsGrid");
            //claimAccountsGrid.setStore(ddstore);
            claimAccountsGrid.renderArray(ddstore);

        });
    });