Зачем сетке Dojo нужен столбец имени в источнике данных json? - PullRequest
1 голос
/ 01 мая 2009

В следующем примере данные отображаются в сетке, только если данные json содержат столбец имени -> первая сетка показывает данные, вторая нет.

Почему это так?

index.html: сетка додзё

    <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"}]
}

Ответы [ 2 ]

2 голосов
/ 25 августа 2009

Просто добавьте атрибут запроса к вашему элементу. Как это:

0 голосов
/ 04 мая 2009

Имя столбца не требуется однако вам нужна карта между свойством в хранилище данных и именем столбца в сетка. Это делается при определении сетки «Макет» свойство 'field' в 'Layout' - это имя столбца в хранилище данных (точнее, имя свойства), а свойство 'name' в 'Layout' - это имя столбца в сетке.

    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}
        ]
    }];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...