Dojox Datagrid содержит данные, но отображается как пустой - PullRequest
1 голос
/ 26 февраля 2010

Я бы очень признателен за любую помощь в этом.Это Dojox Datagrid, который я создаю программно и предоставляю данные JSON.На данный момент я создаю эти данные в самом JavaScript.Пожалуйста, обратитесь к приведенному ниже образцу кода.

var upgradeStageStructure =[{
    cells:[
      {
        field: "stage",
        name: "Stage",
        width: "50%",
        styles: 'text-align: left;'
      },
      {
        field:"status",
        name: "Status",
        width: "50%",
        styles: 'text-align: left;'
      }
    ]
    }];

    var upgradeStageData =
      [
        {id:1, stage: "Preparation", status: "Complete"},
        {id:2, stage: "Formatting", status: "Complete"},
        {id:3, stage: "OS Installation", status: "Complete"},
        {id:4, stage: "OS Post-Installation", status: "In Progress"},
        {id:5, stage: "Application Installation", status: "Not Started"},
        {id:6, stage: "Application Post-Installation", status: "Not Started"}
      ];
    var stagestore = new dojo.data.ItemFileReadStore({data:{identifier:"id", items: upgradeStageData}});
var upgradeStatusGrid = new dojox.grid.DataGrid({
        autoHeight: true,
        style: "width:400px;padding:0em;margin:0em;",
        store: stagestore,
        clientSort: false,
        rowSelector: '20px',
        structure: upgradeStageStructure,
        columnReordering: false,
        selectable: false,
        singleClickEdit: false,
        selectionMode: 'none',
        loadingMessage: 'Loading Upgrade Stages',
        noDataMessage:'There is no data',
        errorMessage: 'Failed to load Upgrade Status'
    });

    dojo.byId('progressIndicator').innerHTML='';
    dojo.byId('progressIndicator').appendChild(upgradeStatusGrid.domNode);
    upgradeStatusGrid.startup();

Проблема в том, что я не вижу ничего в сетке при отображении (без заголовков, без данных).Но я точно знаю, что данные в сетке существуют и сетка правильно инициализирована, потому что я позвонил alert (grid.domNode.innerHTML);.Получившийся HTML-код показывает таблицу, содержащую строки заголовка и вышеприведенные данные.

Эта ссылка содержит изображение, которое иллюстрирует то, что я вижу при отображении страницы.(Не могу публиковать изображения, так как моя учетная запись здесь новая)

Как вы можете заметить, я создал 6 строк для 6 частей данных, но сетка - беспорядок.Пожалуйста, помогите, если вы думаете, что знаете, что может пойти не так.

Заранее спасибо, Viv

Ответы [ 2 ]

1 голос
/ 08 мая 2010

Первое, что нужно сделать, это использовать что-то вроде Firebug, http://getfirebug.com/,, чтобы проверить DOM, чтобы убедиться, что ваша сетка данных вставляется в DOM (но не видна). Ищите что-нибудь в классе "dojoxGrid". Если вы видите это, видите ли вы какие-либо стили, связанные с ним? Если может быть, что ваш рост установлен в 0, или он стилизован как скрытый, или ...

Я столкнулся с проблемой, которую вы решаете, когда не установил высоту моей сетки с фиксированным числом пикселей. Итак, когда моя сетка выглядела примерно так, все работало хорошо:

(In my HTML Markup:)
<div id="kgbHolder"></div>

(In my JavaScript:)
var kgbStore = new dojox.data.QueryReadStore({ url: "kgbService.php?kgbID=" + id });
var kgbGrid = new dojox.grid.DataGrid({
            store: kgbStore,
            noDataMessage: 'No kreits associated with selected query.',
            selectionMode: 'single',
            height: "400px",
            clientSort: true,
            structure: kgbGridLayout
        });
var kgbHolder = dojo.byId('kgbHolder'); 
kgbHolder.appendChild(kgbGrid.domNode);
kgbGrid.startup();
dijit.byId('kgbDialog').show();

Примечание: у меня были проблемы с установкой высоты (с шириной) с помощью клавиши стиля. Сначала попробуйте только высоту: «someNumpx».

0 голосов
/ 16 мая 2010

Я наконец-то смог это исправить! В моем HTML-файле была следующая разметка:

<center>
 <div id="gridArea">
   <div dojoType="dojox.data.DataGrid" dojoAttachPoint="myGrid"></div>
 </div> 
</center>

Проблема была с тегом <center>. Удаление этого привело к правильному отображению сетки с данными. Это странно, и я был бы признателен, если бы кто-нибудь смог объяснить, почему это происходит.

...