GWT - ListBox - предварительный выбор элемента - PullRequest
0 голосов
/ 17 сентября 2009

У меня возникли сомнения относительно предварительного выбора (setSelectedIndex(index)) элемента в ListBox, я использую Spring + GWT.

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

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

Я делаю заполнение в методе обновления виджета.

Я попытался установить selectedItem в методе обновления, но он дает мне нулевую ошибку.

Я искал несколько мест, и кажется, что ListBox заполнены только в точный момент отображения. Таким образом, предварительный выбор был бы невозможен.

Я подумал о каком-то событии, которое происходит при отображении страницы.

onLoad () не работает ..

У кого-нибудь есть что-нибудь, чтобы помочь мне здесь?

Ответы [ 4 ]

3 голосов
/ 09 октября 2009

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

void updateListContent(MyDataObject selected, List<MyDataObject> list){
     for (MyDataObject anObject : list) {
          theListBox.addItem(anObject.getTextToDisplay(), anObject.getKeyValueForList());
     }
     theListBox.setSelectedIndex(list.indexOf(selected));
}

Если это поле множественного выбора, может сработать что-то подобное:

void updateListContent(List<MyDataObject> allSelected, List<MyDataObject> list){
     for (MyDataObject anObject : list) {
          theMultipleListBox.addItem(anObject.getTextToDisplay(), anObject.getKeyValueForList());
     }
     for (MyDataObject selected : allSelected) {
         theMultipleListBox.setItemSelected(list.indexOf(selected), true);
     }
}

(Обратите внимание, что я на самом деле не скомпилировал это, поэтому могут быть опечатки. И это предполагает, что выбранный элемент (ы) действительно присутствует в списке возможных значений, так что если вы не можете быть уверены в этом, нужно добавить некоторые проверки границ.)

0 голосов
/ 25 сентября 2017
private void setSelectedValue(ListBox lBox, String str) {
    String text = str;
    int indexToFind = -1;
    for (int i = 0; i < lBox.getItemCount(); i++) {
        if (lBox.getValue(i).equals(text)) {
            indexToFind = i;
            break;
        }
    }
    lBox.setSelectedIndex(indexToFind);
}
0 голосов
/ 25 января 2013

Предварительный выбор должен также работать с функцией setValue (). Таким образом, не требуется сложный код.

0 голосов
/ 12 апреля 2010

Я успешно устанавливал значения и индекс выбора до прикрепления, насколько я знаю, это должно работать Однако при установке для выбранного индекса значения -1 в IE см. http://code.google.com/p/google-web-toolkit/issues/detail?id=2689.

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