powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Отметить значения в ListBox
13 сообщений из 13, страница 1 из 1
Отметить значения в ListBox
    #33197335
Март
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В listbox сыпятся значения из базы данных. Затем из БД выбираются значения сопоставленные пользователю. Нужно в листбоксе отметить значения для пользователя.
Спасибо.

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim cnt As New SqlConnection(...)
Dim cmdt As New SqlCommand("SELECT IDFilial, Name FROM vFilials_All ORDER BY Name", cnt)
Dim drt As SqlDataReader

Try
cnt.Open()
lsbFilial.DataSource() = cmdt.ExecuteReader
lsbFilial.DataTextField() = "Name"
lsbFilial.DataValueField = "IDFilial"
lsbFilial.DataBind()
Catch ex As SqlException
...
Catch ex As Exception
...
Finally
cnt.Close()
End Try

Dim cnf As New SqlConnection(...)
Dim cmdf As New SqlCommand("SELECT IDFilial, fname FROM vUser2Filial WHERE IDUSER =" + uid, cnf)
Dim drf As SqlDataReader

Try
cnf.Open()
drf = cmdf.ExecuteReader
lsbFilial.SelectedIndex = lsbFilial.Items.IndexOf(lsbFilial.Items.FindByValue(Server.HtmlEncode(drf.Item("IDFilial").ToString)))
Catch ex As SqlException
...
Catch ex As Exception
....
Finally
cnf.Close()
End Try

End Sub
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33197340
Март
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такую ошибку дает
Ошибка просмотра страницы. Invalid attempt to read when no data is present.

Я так понимаю, что данных в листбоксе еще нет. А как быть?
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33197498
Март
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если так делаю, то отмечается только последняя строка

lsbFilial.DataSource() = cmdt.ExecuteReader
lsbFilial.DataTextField() = "Name"
lsbFilial.DataValueField = "IDFilial"
lsbFilial.DataBind()

lsbFilial.SelectedValue = "14"
lsbFilial.SelectedValue = "35"
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33197653
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНужно в листбоксе отметить значения для пользователя.
Если это то, о чём я думаю - то:

1. Exception Details: System.Web.HttpException: A ListBox cannot have multiple items selected when the SelectionMode is Single.
Лечиться - ListBox1.Properties.SelectionMode=Multiple


2.
Код: plaintext
1.
2.
3.
4.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ListBox1.Items.Item( 0 ).Selected = True
        ListBox1.Items.Item( 2 ).Selected = True
End Sub
При условии что в ListBox1 как минимум 3 значения...
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33197669
Март
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, так работает. А почему мой вариант не работает?
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33197677
Март
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как к нужному виду преобразовать. Вот так у меня сейчас.

'lsbFilial.DataSource() = cmdf.ExecuteReader
'lsbFilial.DataTextField() = "fname"
'lsbFilial.DataValueField = "IDFilial"
'lsbFilial.DataBind()

'lsbFilial.Items.Item(0).Selected = True
'lsbFilial.Items.Item(2).Selected = True

' While drf.Read
'lsbFilial.SelectedIndex = lsbFilial.Items.IndexOf(lsbFilial.Items.FindByValue(Server.HtmlEncode(drf.Item("IDFilial").ToString)))
'End While
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33197695
Март
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так работает, но самая первая строка не отмечается и не работает, если всего одну строчку надо выделить
While drf.Read
isel = lsbFilial.Items.IndexOf(lsbFilial.Items.FindByValue(Server.HtmlEncode(drf.Item("IDFilial"))))
lsbFilial.Items.Item(isel).Selected = True
'lsbFilial.SelectedIndex = lsbFilial.Items.IndexOf(lsbFilial.Items.FindByValue(Server.HtmlEncode(drf.Item("IDFilial").ToString)))
End While
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33197728
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ListBox1.Items.Item( 0 ).Selected = True
End Sub
но, ведь так работает...
значит что-то у тебя не так продумано или недоделано...
P.S. кстати, зачем тебе вообще - lsbFilial.SelectedIndex ?
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33198082
Март
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vladgrig
Код: plaintext
1.
2.
3.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ListBox1.Items.Item( 0 ).Selected = True
End Sub
но, ведь так работает...
значит что-то у тебя не так продумано или недоделано...
P.S. кстати, зачем тебе вообще - lsbFilial.SelectedIndex ?

Это в форме редактирования пользователя. Редактору показываются данные пользователя в элементах формы и плюс листбоксе отмечаются филиалы (в листбокс сначала загружаются все филиалы) доступные данному пользователю.
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33198096
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как мудро... Твой последний пост был и так понятен по смыслу предыдущих. Просто, как правило, lsbFilial.SelectedIndex используется, что в Win, что в Web для определения значения (в данном случае для отправки на сервер выбранного пользователем значения в ListBox1). Вот я и спросил - для чего ты его прописываешь с самого начала?
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33198103
Март
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МартВот так работает, но самая первая строка не отмечается и не работает, если всего одну строчку надо выделить
While drf.Read
isel = lsbFilial.Items.IndexOf(lsbFilial.Items.FindByValue(Server.HtmlEncode(drf.Item("IDFilial"))))
lsbFilial.Items.Item(isel).Selected = True
'lsbFilial.SelectedIndex = lsbFilial.Items.IndexOf(lsbFilial.Items.FindByValue(Server.HtmlEncode(drf.Item("IDFilial").ToString)))
End While

Так работает на самом деле, ранее по недосмотру неточность была.
Спасибо.
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33198107
Март
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vladgrigКак мудро... Твой последний пост был и так понятен по смыслу предыдущих. Просто, как правило, lsbFilial.SelectedIndex используется, что в Win, что в Web для определения значения (в данном случае для отправки на сервер выбранного пользователем значения в ListBox1). Вот я и спросил - для чего ты его прописываешь с самого начала?

Это ведь форма редактирования. Т.е. чтобы редактору показать какие филиалы сопоставлены пользователю. Далее он в листбоксе может убрать или добавить филиалы.
...
Рейтинг: 0 / 0
Отметить значения в ListBox
    #33198238
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если всё работает - то хорошо... просто когда в коде выбираешь функцию - наш "advanced notpad" (VS.Net 2003 ;) подсказывает, что lsbFilial.SelectedIndex - "Gets or Sets the lowest ordinal index of the selected items in list".
Думай сам, как это вяжеться с мультиселектом ;)
P.S. Так на всякий случай, вот что мне пришло в голову относительно твоей задачи:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not Me.IsPostBack Then bindlist()

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        For Each item As ListItem In ListBox1.Items
            If item.Selected = True Then
                Response.Write(item.Text)
                Response.Write("<br>")
            End If
        Next

End Sub

Private Sub bindlist()
        ListBox1.Items.Add("1111")
        ListBox1.Items.Add("2222")
        ListBox1.Items.Add("3333")
        ListBox1.Items.Add("4444")

        ListBox1.Items( 0 ).Selected = True
        ListBox1.Items( 2 ).Selected = True
End Sub
Думаю, тебе это может пригодиться...
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Отметить значения в ListBox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]