Как поставить Dojox.grid в дижит. Диалог - PullRequest
4 голосов
/ 03 августа 2009

Я прочитал сообщения о dojox.Grid здесь, в том числе о tabcontainer, но, похоже, это не решает мою проблему.

У меня есть сетка, которую я добавляю программно, которая работает, если сетка находится в «основной» разметке, но перестает отображаться, если я помещаю сетку в диалог.

Есть идеи, почему? Использование dojo 1.3.1.

dijit.byId("myDialog").show();
var gridStore = new dojo.data.ItemFileReadStore({
      data : {
        identifier : "id",
        items      : [
                      {"id" : 1, "label" : "foo"},
                      {"id" : 2, "label" : "bar"},
                      {"id" : 3, "label" : "baz"}
        ]
      }
    });

    /* A simple layout that specifies column headers and
     * mappings to fields in the store */
    var gridLayout = [
            {name : "ID",    field : "id",    width : "50%"},
            {name : "Label", field : "label", width : "50%"}
    ];

    /* Programmatically construct a data grid */
    var grid = new dojox.grid.DataGrid({
                       store     : gridStore,
                       structure : gridLayout
               }, "gridNode");

    /* Tell the grid to lay itself out since
     * it was programmatically constructed */
    grid.startup();

Разметка:

 <div dojoType="dijit.Dialog" id="myDialog" title="Multiple Addresses" style="width:400px;height:300px" >
    <div dojoType="dijit.layout.ContentPane" id="gridNode" style="positon:relative;width:100%;height:100%"></div>

Спасибо за любую помощь, Ruprict

Ответы [ 3 ]

3 голосов
/ 03 августа 2009

Итак, проблема, с которой я столкнулся, возникла из-за того, что я не наложил явный стиль на div контейнера grid (gridNode), как только я сделал это:

<div dojoType="dijit.layout.ContentPane" id="gridNode" style="width:400px;height:300px"></div>

Все заработало.

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

FYI. Я делаю аналогичную вещь (сетка в диалоге) и обнаружил, что если я пытаюсь изменить хранилище (или хотя бы вызвать setStore в сетке), пока диалог скрыт, возникают ошибки. Просто что-то, чтобы остерегаться.

0 голосов
/ 28 мая 2015

Я создавал все это программно, так что у меня это не сработало, мне пришлось подключиться к методу _getFocusItems диалогового окна, чтобы это случилось, только анимация диалога закончилась.

lov.connect(lov,"_getFocusItems",dojo.hitch(this,function(){
                var dijitTitle = new dijit.TitlePane({
                    title: "Resultados",
                    toggleable:false,
                    open:true,
                    style:"min-width:98%;display:inline-block;width:98%;height:"+dialogStyle.h-100+"px;",
                    baseClass:"dijitTitlePane qtResultsTitle"
                },div);
                dijitTitle.startup();

                var fisaSubGrid = new dojox.grid.EnhancedGrid({
                    store:store,
                    structure: layoutRate,
                    autoHeight:"true",
                    autoWidth:true,
                    initialWidth:dialogStyle.w-50+"px",
                    plugins: {
                        pagination: {
                            description: false,
                            sizeSwitch: false,
                            pageStepper: true,
                            gotoButton: false,
                            maxPageStep: 5,
                            position: "bottom",
                            defaultPage: 2,
                            defaultPageSize: 10
                        }
                    }
                });
                dijitTitle.addChild(fisaSubGrid);
                fisaSubGrid.startup();

            }));
...