ListBox не получает все выбранные элементы - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть ListBox, который динамически заполняется из базы данных в коде позади. У меня есть другая кнопка, и когда я нажимаю кнопку, событие нажатия кнопки получает все выбранные элементы списка и вставляет текст элемента списка в базу данных. Я установил AutoPostBack как false, а EnableViewState имеет значение true в свойстве списка

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

protected void Page_Load(object sender, EventArgs e)
{  
        if (!IsPostBack)
        {    
            loadrdlist();
        }  
} 

protected void loadrdlist()
{
         ((ListBox)TestFormView.FindControl("ListBoxB")).Items.Clear();

        foreach (FailureTempRD rd in FailureTempRD.SelectFailureTempRD())
            ((ListBox)TestFormView.FindControl("ListBoxB")).Items.Add(new ListItem(rd.ReferenceDesignator, rd.ReferenceDesignator)); 
}

protected void btn_AddRD_Click(object sender, EventArgs e)
{
    foreach (ListItem rd in ((ListBox)TestFormView.FindControl("ListBoxB")).Items) //This is where it only see 1 selected item
     {
        if (rd.Selected == true) 
           //put selected item to database
        }
    }
}

Здесь есть и список, и кнопка

<asp:ListBox ID="ListBoxB" runat="server" SelectionMode="Multiple" ></asp:ListBox>
<asp:Button ID="btn_AddRD" runat="server" CausesValidation="False"  onclick= "btn_AddRD_Click" Text="Add" />

Обновление: Я понимаю, почему. Когда я загружаю список элементов, мне нужно добавить идентификатор в качестве значения элемента списка. Поэтому измените следующий код. Я тестирую несколько раз, и это работает как намерение.

 ((ListBox)TestFormView.FindControl("ListBoxB")).Items.Add(new ListItem(rd.ReferenceDesignator, rd.ReferenceDesignator)); 

К

 ((ListBox)TestFormView.FindControl("ListBoxB")).Items.Add(new ListItem(rd.ReferenceDesignator, rd.ID));

1 Ответ

0 голосов
/ 09 февраля 2012

Попробуйте использовать метод GetSelectedIndices .

Сверху ссылка:

Используйте метод GetSelectedIndices, чтобы идентифицировать или получить доступ к выбранному элементы в элементе управления ListBox. Каждый элемент в возвращаемом массиве представляет индекс для выбранного элемента списка. Вы можете использовать индекс значения для доступа к элементам в коллекции Items.

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