2013-04-17 6 views
0
<div id="gridDiv"></div> 
<button id="addRow" data-dojo-type="dijit.form.Button">Add Row</button> 


require(['dojo/_base/lang', 'dojox/grid/DataGrid' , 'dojo/data/ItemFileWriteStore' , 'dojo/dom' , 'dojo/domReady!'], 
    function(lang, DataGrid, ItemFileWriteStore, Button, dom){ 
    /*set up data store*/ 
    var data = { 
     identifier: "id", 
     items: [] 
    }; 

    var store = new ItemFileWriteStore({data: data}); 

    /*set up layout*/ 
    var layout = [[ 
     {'name': 'Column 1', 'field': 'id', 'width': '100px'}, 
     {'name': 'Column 2', 'field': 'col2', 'width': '100px'}, 
     {'name': 'Column 3', 'field': 'col3', 'width': '200px'}, 
     {'name': 'Column 4', 'field': 'col4', 'width': '150px'} 
    ]]; 

    /*create a new grid*/ 
    var grid = new DataGrid({ 
     id: 'grid', 
     store: store, 
     structure: layout, 
     rowSelector: '20px'}); 

    /*append the new grid to the div*/ 
    grid.placeAt("gridDiv"); 

    /*Call startup() to render the grid*/ 
    grid.startup(); 
}); 
  • У меня есть программно созданный dojox/сетки/DataGrid без данных (пустой магазин) в нем .. только макет.
  • И у меня есть кнопка вне сетки.
  • Моя потребность, при нажатии кнопки, мне нужно добавить одну пустую строку в сетку. эта пустая строка не должна быть от json. он должен быть из магазина.
  • это означает onclick кнопки, пустую строку следует добавить в хранилище, а затем сетку загрузили с этим магазином. Является ли это возможным?

ответ

2

This fiddle добавляет новый товар в магазин при нажатии кнопки. И сетка обновится, чтобы отразить новое содержимое магазина.

Мясо кода заключается в следующем:

var id = 0; 

var button = new Button({ 
    onClick: function() { 
     store.newItem({ 
      id: id, 
      col2: "col2-" + id, 
      col3: "col3-" + id, 
      col4: "col4-" + id 
     }); 
     id++; 
    } 
}, "addRow"); 

Скриншот (после 2 нажатия кнопок):

enter image description here

Смежные вопросы