Frage

Ich habe Probleme mit der Herstellung meiner Dojo EnhancedGrid bearbeitet werden. Derzeit kann ich die Gitterzellen einen Doppelklick auf, und ich kann den Wert ändern, aber der Moment, den ich drücken Sie die Eingabetaste erneut, oder versuchen, die Zellen zu verlassen (dh den neuen Wert in das Netz zu speichern), erhielt ich die „Behauptung scheiterte in ItemFileWriteStore“ Fehler in meiner Firebug.

Unten ist mein Quellcode:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
    <style type="text/css">
        body, html { font-family:helvetica,arial,sans-serif; font-size:90%; }
    </style>
    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dijit/themes/claro/claro.css" />
    <style type="text/css">
        @import "http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojox/grid/resources/Grid.css";
        @import "http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojox/grid/resources/claroGrid.css";
        .dojoxGrid table { margin: 0; }
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js" djConfig="parseOnLoad: true">
    </script>

    <script type="text/javascript">
        dojo.require("dojox.grid.EnhancedGrid");
        dojo.require("dojo.data.ItemFileWriteStore");
        dojo.require("dojox.grid.cells._base");

        dojo.addOnLoad(function() {

            var layoutabc = 
            [[
                {
                    field: "title",
                    name: "TitleofMovie",
                    width: "300px",
                    editable: true
                },
                {
                    field: "year",
                    name: "Year",
                    width: "200px",
                    editable: true
                },
                {
                    field: "producer",
                    name: "Producer",
                    width: "auto",
                    editable: true,
                    type: dojox.grid.cells.Cell
                }
            ]];


            var mystore = new dojo.data.ItemFileWriteStore({
                url: "movies.json"
            });

            // create a new grid:
            var grid = new dojox.grid.EnhancedGrid(
                {
                    query: {},
                    store: mystore,
                    structure: layoutabc
                },
                document.createElement("div")
            );
            dojo.byId("gridDiv").appendChild(grid.domNode);

            grid.startup();
        });
    </script>
</head>

<body class="claro">
    <div id="gridDiv" style="width: 800px; height: 400px;">
    </div>
</body>

Und dies ist der Inhalt meines movies.json (der Inhalt des Datums komisch, ich weiß):

{
    items: 
    [
        {
            title: "Africa",
            year: "continent",
            producer: "Katia Lund"
        },
        {
            title: "Kenya",
            year: "country",
            producer: "Christine Jeffs"
        },
        {
            title: "Mombasa",
            year: "city",
            producer: "Ridley Scott"
        }
    ]
}
War es hilfreich?

Lösung

Problem gelöst. Stellt sich heraus, ich brauche das „Plug-ins“ Attribut für das EnhancedGrid Objekt zu definieren, obwohl es nur ein leeres Objekt. Sobald das definiert ist, es funktioniert.

Andere Tipps

Ich denke, das Problem ist, dass Ihr Geschäft keine Kennung enthält so, wenn die Gitter versucht zu schreiben, um den Laden, spielt es keine Möglichkeit hat, zu wissen, welchen Eintrag sollte es schreiben.

Ich würde zunächst die Antwort für movies.json Bearbeitung, vielleicht wie folgt aus:

{
    identifier:"id",
    items: 
    [
        {
            id:1
            title: "Africa",
            year: "continent",
            producer: "Katia Lund"
        },
        {
            id:2
            title: "Kenya",
            year: "country",
            producer: "Christine Jeffs"
        },
        {
            id:3
            title: "Mombasa",
            year: "city",
            producer: "Ridley Scott"
        }
    ]
}

Beachten Sie, dass Sie das ID-Feld in der Layoutliste nicht enthalten müssen, wird es an das Netz ohnehin zugänglich sein. Auch als Kennung schon sagt, muss es ein eindeutiger Wert für jedes Element im Laden sein, sonst wird es nicht initialisiert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top