Я бы сначала упростил задачу, выполнив следующее:
foreach (object itm in lstGroup.SelectedItems)
{
Group grp = new Group();
grp.GroupId = Convert.ToInt32(itm);
Grps.Add(grp);
}
Таким образом, код немного чище.Тестируя это, я могу получить все свои выборы, чтобы показать.
Поскольку вы на самом деле ничего не упоминали об отладке, если вышеуказанное решение не работает для вас, я бы поставил точку останова сразу после окончания foreach
и посмотрел бы содержимое Grps
.Если в Grps
содержится нужное количество элементов, проблема кроется в вашем коде.Возможно, это метод usrGrp.UpdateUserGroups()
.
Я действительно не понимаю, почему в Grps
нет нужного количества элементов, но если нет, дайте нам знать, и яконечно, мы можем что-то выяснить.
Обновление : Я попробовал урезанную версию вашего кода.Это работает правильно для меня.Проверьте это, а затем посмотрите, сможете ли вы собрать его обратно, чтобы сделать то, что вам нужно.
Я определил простой список для хранения выборов:
List<int> selectionList = new List<int>();
ЗатемЯ заполняю его, используя вашу общую структуру, за исключением того, что я вызываю элемент управления напрямую, поскольку он уже существует на текущей странице, а не полагаюсь на this.FindControl ().
protected void Button1_Click(object sender, EventArgs e)
{
foreach (ListItem itm in UserGroup.Items)
{
if (itm.Selected == true)
{
selectionList.Add(Convert.ToInt32(itm.Value));
}
}
}
После нажатия этой кнопки, если я выбрал 3 элемента, тогда 3 элемента находятся в selectionList.Надеюсь, у вас тот же результат.Удачи!