Pregunta

En la siguiente muestra, los datos solo se muestran en la cuadrícula si los datos json contienen una columna de nombre - > la primera cuadrícula muestra datos, la segunda no.

¿Por qué es este el caso?

index.html:                                   cuadrícula de dojo

    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dijit/themes/tundra/tundra.css" />
    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/resources/dojo.css" />
    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojox/grid/_grid/tundraGrid.css">
    <script type="text/javascript" 
            src="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js" 
            djConfig="parseOnLoad: true, isDebug: true">
    </script>

    <script type="text/javascript">
      dojo.require("dojo.parser");
      dojo.require("dojox.grid.Grid");
      dojo.require("dojo.data.ItemFileReadStore");
    </script>

  </head>
  <body class="tundra">
   <span dojoType="dojo.data.ItemFileReadStore" 
            jsId="withNameStore" 
            url="WithNameColumn.json"
            clearOnClose="true">
    </span>
    <table id="withNameGrid"
           dojoType="dojox.grid.Grid" 
           store="withNameStore"
           clientSort="true"
           style="width: 20em; height: 20em;">
        <thead>
           <tr>
              <th field="ID" >ID</th>
              <th field="test">Test</th>
           </tr>
        </thead>
    </table>
    <span dojoType="dojo.data.ItemFileReadStore" 
          jsId="withoutNameStore" 
          url="WithoutNameColumn.json"
          clearOnClose="true">
    </span>
    <table id="withoutNameGrid" 
           dojoType="dojox.grid.Grid" 
           store="withoutNameStore"
           clientSort="true"
           style="width: 20em; height: 20em;">
        <thead>
           <tr>
              <th field="ID" >ID</th>
              <th field="test">Test</th>
           </tr>
        </thead>
    </table>
  </body>
</html>

WithNameColumn.json:

{
  "identifier":"ID",
  "label":"test",
  "items":
    [{"ID":2,"name":"name1","test":"dog"},
     {"ID":3,"name":"name2","test":"cat"},
     {"ID":4,"name":"name3","test":"mouse"}]
}

WithoutNameColumn.json:

{
  "identifier":"ID",
  "label":"test",
  "items":
    [{"ID":2,"test":"dog"},
     {"ID":3,"test":"cat"},
     {"ID":4,"test":"mouse"}]
}
¿Fue útil?

Solución

Simplemente agregue un atributo de consulta a su elemento. Así:

< consulta de tabla = " {ID: '*'} " ... >

Esto se debe a que realizará una consulta cuando solicite datos del almacén de datos

Otros consejos

La columna de nombre no es necesaria sin embargo, necesita un mapa entre la propiedad en el Almacén de datos y el nombre de la columna en el cuadrícula. Esto se hace al definir la cuadrícula 'Diseño' la propiedad 'campo' en 'Diseño' es el nombre de la columna en el Almacén de datos (el nombre de la propiedad para ser exactos) y la propiedad 'nombre' en 'Diseño' es el nombre de la columna en la cuadrícula.

    gridLayout = [{
        defaultCell: { width: 8, editable: true, type: dojox.grid.cells._Widget, styles: 'text-align: right;'  },
        rows: [
            { name: 'Id', field: 'id', editable: false /* Can't edit ID's of dojo.data items */ },
            { name: 'Date', field: 'col8', width: 10,
                type: dojox.grid.cells.DateTextBox,
                formatter: formatDate, 
                constraint: {formatLength: 'long', selector: "date"}},
            { name: 'Priority', styles: 'text-align: center;', field: 'col1', 
                type: dojox.grid.cells.ComboBox, 
                options: ["normal", "note", "important"], width: 10},
            { name: 'Mark', field: 'col2', width: 3, styles: 'text-align: center;', 
                type: dojox.grid.cells.CheckBox},
            statusCell,
            { name: 'Message', field: 'col4', styles: '', width: 10, 
                type: dojox.grid.cells.Editor, editorToolbar: true },
            { name: 'Amount', field: 'col5', formatter: formatCurrency, constraint: {currency: 'EUR'}, 
                widgetClass: dijit.form.CurrencyTextBox },
            { name: 'Amount', field: 'col5', formatter: formatCurrency, constraint: {currency: 'EUR'}, 
                widgetClass: dijit.form.HorizontalSlider, width: 10}
        ]
    }];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top