Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript dgrid ondemand网格未填充内存存储_Javascript_Dojo_Dgrid - Fatal编程技术网

Javascript dgrid ondemand网格未填充内存存储

Javascript dgrid ondemand网格未填充内存存储,javascript,dojo,dgrid,Javascript,Dojo,Dgrid,我试图用内存存储填充dgrid onDemand网格,但网格中不会填充数据。我正在打一个xhr.get电话,我已经验证了返回的数据。这就是我所拥有的: ...... var grid; function TicketUnMarkedSet(GridData) {//this function is called back after xhr.get and the parameter GridData is populated var gridStore =

我试图用内存存储填充dgrid onDemand网格,但网格中不会填充数据。我正在打一个xhr.get电话,我已经验证了返回的数据。这就是我所拥有的:

 ......     
 var grid;

 function TicketUnMarkedSet(GridData) {//this function is called back after xhr.get and the parameter GridData is populated
          var gridStore = new Memory({ data: GridData });//this store seems to be ok
          grid = new OnDemandGrid({
              showHeader: true,
              store:gridStore
          }, "gridDiv");
          grid.startup(); 
          grid.refresh();
      }

<div style="position: absolute; left: 0px; bottom: 0px; z-index: 999;">
          <div id="tpStationData" data-dojo-type="dijit/TitlePane" data-dojo-props="title:'Open Tickets', closable:false,  open:false">
              <div id="gridTabDiv" data-dojo-type="dijit/layout/ContentPane" style="width: 100%;
                  height: 100%; overflow: auto;" title="Data">
                  <div id="gridDiv">
                  </div>
              </div>
          </div>
      </div>

你知道为什么这个格子是空的吗?谢谢检查gridStore内存对象以查看是否存在有效数据:

我认为您应该在JSON数据中添加小写字母“id:1”,并为每个记录将该值增加1

require(["dojo/store/Memory"], function(Memory){
    var someData = [
        {id:1, name:"One"},
        {id:2, name:"Two"}
    ];
    store = new Memory({data: someData});

    store.get(1) -> Returns the object with an id of 1

    store.query({name:"One"}) // Returns query results from the array that match the given query

    store.query(function(object){
        return object.id > 1;
    }) // Pass a function to do more complex querying

    store.query({name:"One"}, {sort: [{attribute: "id"}]}) // Returns query results and sort by id

    store.put({id:3, name:"Three"}); // store the object with the given identity

    store.remove(3); // delete the object
});
使您在GridData中输入的JSON数据看起来像上面示例中的someData

可能会改变:

var gridStore = new Memory({ data: GridData });

然后添加数据存储ObjectStore:

dataStore = new ObjectStore({ objectStore: gridStore });
将数据存储添加到网格:

grid = new DataGrid({
        store: dataStore,
希望这能帮到你。。 我在数据网格的演示页面上找到了以下信息:

在本页的示例中:

Dojo网格演示:

网格的JSON数据:

此演示的代码:

<!DOCTYPE HTML>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Demo: dojox/grid/DataGrid</title>
        <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/dojo/1.8.5/dijit/themes/claro/claro.css" media="screen">
            <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/dojo/1.8.5/dojo/resources/dojo.css" />
    <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/dojo/1.8.5/dojox/grid/resources/claroGrid.css" />
    <link rel="stylesheet" href="style.css" media="screen">
    <link rel="stylesheet" href="../../../resources/style/demo.css" media="screen">
</head>
<body class="claro">
    <h1>Demo: dojox/grid/DataGrid</h1>

    <br/>
    <div id="grid"></div>

    <!-- load dojo and provide config via data attribute -->
    <script src="//ajax.googleapis.com/ajax/libs/dojo/1.8.5/dojo/dojo.js"></script>
    <script>
        var grid, store, dataStore;
        require([
            "dojox/grid/DataGrid",
            "dojo/store/Memory",
            "dojo/data/ObjectStore",
            "dojo/request",
            "dojo/domReady!"
        ], function(DataGrid, Memory, ObjectStore, request){
            request.get("all-batting.json", {
                handleAs: "json"
            }).then(function(data){
                store = new Memory({ data: data.items });
                dataStore = new ObjectStore({ objectStore: store });

                grid = new DataGrid({
                    store: dataStore,
                    query: { id: "*" },
                    structure: [
                        {
                            noscroll: true,
                            defaultCell: { width: "84px" },
                            cells: [
                                { name: "First Name", field: "first" },
                                { name: "Last Name", field: "last" }
                            ]
                        },{
                            defaultCell: { width: "60px" },
                            cells: [
                                [
                                    { name: "Bats", field: "bats", width: "70px", rowSpan: 2 },
                                    { name: "Throws", field: "throws", width: "70px", rowSpan: 2 },
                                    { name: "G", field: "totalG" },
                                    { name: "AB", field: "totalAB" },
                                    { name: "R", field: "totalR" },
                                    { name: "RBI", field: "totalRBI" },
                                    { name: "BB", field: "totalBB" },
                                    { name: "K", field: "totalK" }
                                ],[
                                    { name: "Games as Batter", field: "totalGAB", colSpan: 2 },
                                    { name: "H", field: "totalH" },
                                    { name: "2B", field: "total2B" },
                                    { name: "3B", field: "total3B" },
                                    { name: "HR", field: "totalHR" }
                                ]
                            ]
                        }
                    ]
                }, "grid");

                // since we created this grid programmatically, call startup to render it
                grid.startup();
            });
        });
    </script>
</body>

根据教程“请参见链接”了解详细信息,它包含了数据网格的列,这些列在代码中已被排除。 也许这就是问题所在

    // Create an instance of OnDemandGrid referencing the store
    var grid = new OnDemandGrid({
        store: store,
        columns: {
            first: "First Name",
            last: "Last Name",
            totalG: "Games Played"
        }
    }, "grid");

    grid.startup();
此外,如果上述更改不起作用,您可以创建一个仅用于测试目的的本地数据存储,如下所示。这将有助于你缩小问题的范围

function TicketUnMarkedSet(GridData) {//this function is called back after xhr.get and the parameter GridData is populated

    var testdata = [
                     { id:1, first: "Bob", last: "Barker", age: 89 },
                     { id:2, first: "Vanna", last: "White", age: 55 },
                     { id:3, first: "Pat", last: "Sajak", age: 65 }
    ];

    var gridStore = new Memory({ data: testdata });

    // Create an instance of OnDemandGrid referencing the store
    var grid = new OnDemandGrid({
        store: gridStore ,
        columns: {
            first: "First Name",
            last: "Last Name",
            age: "Age"
        }
    }, "gridDiv");
    grid.startup();
}

问题似乎是我的json的格式。当我从我的服务中得到它时,它看起来是这样的:

 [{"Company":"E W HARMON","DateRcvd":"\/Date(1387311540000-0800)\/","DaysToWork":-203,"ID":9972,"OldTicket":"A30140156","Priority":"NORM","Street":" EL PRADO RD","Ticket":"A30730511","Type":"UPDT","WorkDate":"\/Date(1387311540000-0800)\/","ptCenterX":-13099875.6316766,"ptCenterY":4024215.96028757},{"Company":"E W HARMON","DateRcvd":"\/Date(1389731340000-0800)\/","DaysToWork":-175,"ID":10263,"OldTicket":"A30140156","Priority":"NORM","Street":" EL PRADO RD","Ticket":"A30730511","Type":"UPDT","WorkDate":"\/Date(1389731340000-0800)\/","ptCenterX":-13099875.6316766,"ptCenterY":4024215.96028757}]
而且我的dgrid也不行。如果我通过验证程序运行它,它会说数据是有效的json,但会将其更改为:

[
{
    "Company": "E W HARMON",
    "DateRcvd": "/Date(1387311540000-0800)/",
    "DaysToWork": -203,
    "ID": 9972,
    "OldTicket": "A30140156",
    "Priority": "NORM",
    "Street": " EL PRADO RD",
    "Ticket": "A30730511",
    "Type": "UPDT",
    "WorkDate": "/Date(1387311540000-0800)/",
    "ptCenterX": -13099875.6316766,
    "ptCenterY": 4024215.96028757
},
{
    "Company": "E W HARMON",
    "DateRcvd": "/Date(1389731340000-0800)/",
    "DaysToWork": -175,
    "ID": 10263,
    "OldTicket": "A30140156",
    "Priority": "NORM",
    "Street": " EL PRADO RD",
    "Ticket": "A30730511",
    "Type": "UPDT",
    "WorkDate": "/Date(1389731340000-0800)/",
    "ptCenterX": -13099875.6316766,
    "ptCenterY": 4024215.96028757
}]

它与网格一起工作-我只需要找到一种方法来进行此转换

我在网格中添加了列,如下所示-列确实出现,但数据没有出现。当我调试时,我可以查看网格,看到它确实有一个数据存储code'function TicketUnMarkedSetGridData{var gridStore=new Memory{data:GridData};grid=new OnDemandGrid{showHeader:true,store:gridStore,columns:{ID:ID,Ticket:Ticket,Street:Address,DateRcvd:DateRcvd}…..“code”检查GridData中的json数据。它可能有语法错误。如果可以,请添加到帖子中。我在JSONLint上验证了json-示例{TicketUnMarkedGetResult:[{公司:E-W HARMON,DateRcvd:\/Date13873115400-0800\/,DaysToWork:-202,ID:9972,旧票:A301401156,优先权:NORM,街道:EL PRADO路,票:A30730511,类型:UPDT,工作日期:\/Date138731540000-0800\/,ptCenterX:-13099875.6316766,PTY:4024215.96028757}]谢谢,我尝试了这种方法,但仍然不起作用。其中一个教程中有一个grid.ondgrid-error,我使用了它,但网格似乎没有抛出错误。我真的很困惑这是一个真正的暗箭伤人…但是,如何将json数据元素从“TicketUnMarkedGetResult”更改为“items”?编辑我上面的帖子以检查内存对象。查看我文章的顶部。我尝试查询存储,但没有返回任何内容。看起来存储有问题。JSON是有效的,但根据过去的经验,我知道dojo不喜欢从SQL Server DateRcvd返回的日期格式:\/Date138731154000-0800\/。也许这就是问题所在-我要删除E{TicketUnMarkedGetResult:from your JSON并将'id:'添加到每个记录中。可能将所有日期字段定义为字符串,直到您获得正确显示的数据。可能将id字段重命名为REC_id??听起来就快到了。可能尝试var gridObj=JSON.parsegridData;然后将gridObj插入到数据存储中??JSON.parse失败,我认为是因为它是already是一个对象数组。我正在尝试转换为字符串,在每个对象后添加回车符,然后重新解析.var STicketData=JSON.stringifyresult,null,\r;var OTicketData=JSON.parseSTicketData。但这一点运气不好
[
{
    "Company": "E W HARMON",
    "DateRcvd": "/Date(1387311540000-0800)/",
    "DaysToWork": -203,
    "ID": 9972,
    "OldTicket": "A30140156",
    "Priority": "NORM",
    "Street": " EL PRADO RD",
    "Ticket": "A30730511",
    "Type": "UPDT",
    "WorkDate": "/Date(1387311540000-0800)/",
    "ptCenterX": -13099875.6316766,
    "ptCenterY": 4024215.96028757
},
{
    "Company": "E W HARMON",
    "DateRcvd": "/Date(1389731340000-0800)/",
    "DaysToWork": -175,
    "ID": 10263,
    "OldTicket": "A30140156",
    "Priority": "NORM",
    "Street": " EL PRADO RD",
    "Ticket": "A30730511",
    "Type": "UPDT",
    "WorkDate": "/Date(1389731340000-0800)/",
    "ptCenterX": -13099875.6316766,
    "ptCenterY": 4024215.96028757
}]