Да - вполне возможно.
1) Ответственность за макет страницы несут виджеты макета (ContentPane, StackContainer, BorderContainer, TabContainer ...) Сетка может принимать участие в макете, но вы должны действительно поместить ее в константу, предназначенную для макета.
2) Программное создание может быть достигнуто с помощью:
var layout = [
{name : "MyFirstColumnHeader", field : 'someColumnNameInMyData', width : "180px;"},
{name : "MySecondColumnHeader", field : 'someOtherColumnName', width : "180px;"}];
var emptyData = {identifier : 'uniqueIdOfEachItem', label : 'displayName', items : []};
var store = new dojo.data.ItemFileWriteStore({data : emptyData});
var grid = new dojox.grid.DataGrid({ id : 'myGrid',
query : {uniqueIdOfEachItem: '*'},
store : store,
structure : layout}, gridPlaceholder);
grid.startup();
, где
MyFirstColumnHeader - текст, который вы хотели бы видеть в заголовке первого столбца
someColumnInMyData - это атрибут объекта или «столбец» в данных для отображения
gridPlaceholder - это div на странице для размещения сетки (просто добавьте пустой Content Div в ContentPane и сделайте стиль ContentPane равным width: 100%, height: 100%
uniqueIdOfEachItem - это свойство каждого отображаемого элемента, которое помечает их как уникальные, например, их первичный ключ или идентификатор свойства
Этот пример создает хранилище для чтения / записи и имеет простой макет, но документы dojo должны быть в состоянии помочь с более сложными примерами.