Заполнение хранилища данных FilteringSelect из события onChange - PullRequest
2 голосов
/ 16 апреля 2009

Я пытаюсь связать событие onChange одного FilteringSelect, чтобы заполнить другое FilteringSelect.

// View
dojo.addOnLoad(function () {
    dojo.connect(dijit.byId('filterselect1'), 'onChange', function () {
        dijit.byId('filterselect2').store = new dojo.data.ItemFileReadStore(
            { url: "/test/autocomplete/id/" + dijit.byId("filterselect1").value }
        );
    });
});

JSON генерируется из того, что я могу правильно сказать из Zend Action Controller с использованием autoCompleteDojo помощника.

// Action Controller
public function autocompleteAction()
{
    $id = $this->getRequest()->getParam('id');
    $select = $this->_table->select()
                           ->from($this->_table, array('id','description'))
                           ->where('id=?',$id);

    $data = new Zend_Dojo_Data('id', $this->_table->fetchAll($select)->toArray(), 'description');

    $this->_helper->autoCompleteDojo($data);
}

Я правильно получаю JSON из удаленного хранилища данных, но он не заполняет второе FilteringSelect. Есть ли что-то еще, что мне нужно сделать, чтобы подтолкнуть JSON на FilteringSelect?

Ответы [ 2 ]

3 голосов
/ 21 мая 2009

Я не мог поверить, что это вызывало проблему, но вся проблема сводилась к тому, что кажется, что dojo ItemFileReadStore REQUIRES свойство label JSON должно быть "name". В конце концов это все, что нужно для их соединения.

dojo.addOnLoad(function () {

    dijit.byId('filtering_select_2').store = new dojo.data.ItemFileReadStore({url: '/site/url'});

    dojo.connect(dijit.byId('filtering_select_1'), 'onChange', function (val) {
        dijit.byId('filtering_select_2').query.property_1 = val || "*";
    });
});

ОБНОВЛЕНИЕ: свойство в форме Zend было исправлено с ZF 1.8.4

1 голос
/ 16 апреля 2009

Попробуйте console.log (), чтобы узнать, запущен ли он. Изменение хранилища должно работать, однако для других виджетов, таких как grid, вам также нужно вызывать методы обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...