Сетка с выбором в додзе - PullRequest
       30

Сетка с выбором в додзе

0 голосов
/ 11 марта 2012

Я пытаюсь создать динамическую сетку в додзё.В основном, у меня есть форма выбора и сетка, и когда я выбираю опцию выбора, я хочу, чтобы сетка загружала другой набор данных.

Код:

contentPane = new ContentPane({ 
        title: "Group 1",
    });

//Create grid   
function genGrid(dataframe){
    alert(dataframe);
    myStore = Cache(JsonRest({target:"/data/"+dataframe}), Memory());
    return grid = new DataGrid({
        store: dataStore = ObjectStore({objectStore: myStore}), 
        structure:[{"field": "division", "name": "division", "width": "200px"}, {"field": "country", "name": "country", "width": "200px"}, {"field": "sales", "name": "sales", "width": "200px"}, {"field": "cost", "name": "cost", "width": "200px"}]}, 
    "target-node-id").placeAt(contentPane.containerNode);};

sel = new Select({
        name: 'select2',
        onChange: function(select){alert(select);
                                                                                                                genGrid(select)},
        options: [
            { label: 'TN', value: 'Tennessee' },
            { label: 'VA', value: 'Virginia', selected: true },
            { label: 'WA', value: 'Washington' },
            { label: 'FL', value: 'Florida' },
            { label: 'CA', value: 'csvtable' }]
                }).placeAt(contentPane.containerNode);


contentTabs.addChild(contentPane);

Однако этот код делаетне работа.Если я вызываю genGrid (dataframe) вне атрибута sel onChange, появляется сетка, но затем она не меняется, когда я выбираю параметры в select.

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

1 Ответ

1 голос
/ 12 марта 2012

1) виджетам dojo нужен узел DOM в качестве заполнителя для виджета.Является ли ваш "target-node-id" фактическим элементом DOM с этим идентификатором?Если нет, то сетка не будет хорошо отображаться. При заполнении сетки вам не потребуется никакой вызов placeAt - dojo заменит элемент DOM, имеющий идентификатор target-node-id, на сетку данных.Если вы делаете все это программно, я предлагаю сделать document.createElement ('div') с идентификатором target-node-id, например, присоединить его к родительскому узлу в html и затем создать сетку данных, указав target-идентификатор узла в качестве узла DOM для замены

2) в обработчике события select onChange, вам не нужно создавать новую сетку данных.Вам просто нужно обновить хранилище - сетка данных будет обновляться автоматически (что является преимуществом использования наборов инструментов, таких как dojo), в зависимости от вашего варианта использования, вы даже можете повторно использовать то же хранилище и просто изменить данные в нем (установите clearonclose в хранилище, если оноявляется хранилищем itemfile) См. Dojo - Как обновить комбинированный список с обновленными данными ItemFileReadStore для примера того, как заполнить сетку новыми данными

...