ListBox не получает выбранные элементы

У меня есть ListBox, в который я добавляю ListItems в выделенный код. У меня проблема в том, что ListBox не видит выбранные элементы. У меня ListBox заполняется динамически в зависимости от того, что пользователь выбирает из DropDownList, поэтому для DropDownList установлено значение True для параметра AutoPostBack. Я думаю, что это каким-то образом вызывает проблему.

Мой метод SelectedIndexChanged , который используется всякий раз, когда выбирается элемент в DropDownList, вызывает метод под названием PopulateListBox . Вот как выглядят эти методы:

protected void SelectedIndexChanged(object sender, EventArgs e)
{
    string typeStr = type.SelectedItem.Text;
    MyType = Api.GetType(typeStr);
    PopulateListBox();
}

private void PopulateListBox()
{
    listbox.Items.Clear();
    foreach (PropertyInfo info in MyType.GetProperties())
        listbox.Items.Add(new ListItem(info.Name));
}

Что бы это ни стоило, вот DropDownList и ListBox:

<asp:DropDownList runat="server" ID="type" width="281px" OnSelectedIndexChanged="SelectedIndexChanged" AutoPostBack="true" />

<asp:ListBox runat="server" ID="listbox" width="281px" height="200px" selectionmode="Multiple" />

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

listbox.GetSelectedIndices () ничего не возвращает.

Обновление

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

Мой метод Page_Load выполняет только две вещи. Он инициализирует мою переменную Api и вызывает PopulateDropDown , который выглядит так:

private void PopulateDropDown()
{
    foreach (Type t in Api.GetAllTypes())
        type.Items.Add(new ListItem(t.Name));
    string typeStr = type.Items[0].Text;
    Type = Api.GetType(typeStr);
    PopulateListBox();
}
6
задан Tyler Treat 14 January 2011 в 03:06
поделиться