Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Индексы элементов в ComboBox / 14 сообщений из 14, страница 1 из 1
01.02.2014, 18:51
    #38546024
CvetikZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
В проекте динамически заполняю ComboBox из БД

strSQL = "SELECT id, name FROM nStations ORDER BY id"
где id - код элемента ; используется в качестве индекса для облегчения последующего обращения к БД;
name - наименование элемента;
...
While DATAREADER.Read() = True

cmb_Stations.Items.Insert(DATAREADER.GetValue(0), DATAREADER.GetString(1))

End While

Но в жизни все течет, все меняется и случилось так, что некоторые элементы списка были удалены, и нумерация элементов получилась не сквозная (1,2,3,6,8 ...) , соотв. ComboBox ругается, как только доходит до первого пропущенного номера.

Как с этим бороться?? (изменение нумерации в БД не предлагать, т.к. порушатся все связанные таблицы)
...
Рейтинг: 0 / 0
01.02.2014, 19:50
    #38546046
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
CvetikZ, 1) сделай простой класс:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
class IdAndValue
{
    public int Id;
    public string Value;

    public override string ToString()
    {
        return Value;
    }
}


2) Добавляй в ComboBox элементы типа IdAndValue
Код: c#
1.
cmb_Stations.Items.Add(new IdAndValue { Id = DATAREADER.GetInt32(0), Value = DATAREADER.GetString(1)} );


3) Используй значение поля Id после выбора элемента
...
Рейтинг: 0 / 0
01.02.2014, 20:19
    #38546052
CvetikZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
bazile,

А на VB2010 это можно перевести (я не волшебник, я только учусь... :-) )
...
Рейтинг: 0 / 0
01.02.2014, 20:40
    #38546057
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
CvetikZ,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Class IdAndValue
    Public Dim Id As Integer
    Public Dim Value As String

    Public Overrides Function ToString() As String
        Return Value
    End Function
End Class

' ..................

cmb_Stations.Items.Add(New IdAndValue With { .Id = DATAREADER.GetInt32(0), .Value = DATAREADER.GetString(1)} )



P.S. Изучай синтаксис C# чтобы хотя бы уметь читать его. Далеко не всегда примеры даются на обоих языках.
...
Рейтинг: 0 / 0
01.02.2014, 20:45
    #38546059
CvetikZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
bazile,

Спасибо!!

Просто работаю в VB6, осваиваю VB2010, немного касалась С++.
С классами пока не работала, но буду изучать :-)
...
Рейтинг: 0 / 0
01.02.2014, 23:29
    #38546119
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
CvetikZВ проекте динамически заполняю ComboBox из БД

strSQL = "SELECT id, name FROM nStations ORDER BY id"
где id - код элемента ; используется в качестве индекса для облегчения последующего обращения к БД;
name - наименование элемента;
...
While DATAREADER.Read() = True

cmb_Stations.Items.Insert(DATAREADER.GetValue(0), DATAREADER.GetString(1))

End While

Но в жизни все течет, все меняется и случилось так, что некоторые элементы списка были удалены, и нумерация элементов получилась не сквозная (1,2,3,6,8 ...) , соотв. ComboBox ругается, как только доходит до первого пропущенного номера.

Как с этим бороться?? (изменение нумерации в БД не предлагать, т.к. порушатся все связанные таблицы) Data Binding a Windows Forms ComboBox or ListBox Control
...
Рейтинг: 0 / 0
02.02.2014, 11:02
    #38546274
CvetikZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
sphinx_mv,

Спасибо, но это не совсем то (а точнее, совсем не то...)
...
Рейтинг: 0 / 0
02.02.2014, 12:50
    #38546302
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
Прочитал <Но в жизни все течет, все меняется и случилось так>- живо цинично представил месячные у СУБДа
Ну какой тут лайфхак? - только стена...
...
Рейтинг: 0 / 0
02.02.2014, 14:59
    #38546356
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
CvetikZСпасибо, но это не совсем то (а точнее, совсем не то...)

А если еще раз почитать?

DataSource, DisplayMember, ValueMember
...
Рейтинг: 0 / 0
02.02.2014, 23:16
    #38546651
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
CvetikZsphinx_mv,

Спасибо, но это не совсем то (а точнее, совсем не то...)Сам себе удивляюсь... :)
По ошибке скопировалась "не та" ссылка к "правильному" направлению поиска...

Повторяю еще раз: Bind a Windows Forms ComboBox or ListBox Control to Data
Ну, и если совсем точное направление: Data Binding and Windows Forms . Читать раздел "Common Scenarios That Employ Data Binding" - обратить особое внимание на пункт "Lookup Table".
...
Рейтинг: 0 / 0
02.02.2014, 23:19
    #38546658
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
PallarisCvetikZСпасибо, но это не совсем то (а точнее, совсем не то...)

А если еще раз почитать?

DataSource, DisplayMember, ValueMemberПлюс SelectedItem, SelectedIndex, SelectedValue
...
Рейтинг: 0 / 0
02.02.2014, 23:47
    #38546668
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
sphinx_mv,
что хочет афтар, посмотрел этот бред,
1 хочет получить идентификатор записи в базе что бы потом получить всю запись полностью
вполне может быть уместен этот идиотизм
2 получить записи по форину тут уже теплее.
Так items может принимать любые типы объектов, у которых tostring "заточенный" на видюху
и все осталось инкапсулировать всю выборку в этих объектах что бы не плодить грязь и излишние буквы.
но это сложнее исполнить так как нужна глюкоза..
...
Рейтинг: 0 / 0
03.02.2014, 01:46
    #38546712
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
Где-то в степиsphinx_mv,
что хочет афтар, посмотрел этот бред,
1 хочет получить идентификатор записи в базе что бы потом получить всю запись полностью
вполне может быть уместен этот идиотизм
2 получить записи по форину тут уже теплее.Что раз, что два - одно и то же... С точки зрения доступа к данным...
Где-то в степиТак items может принимать любые типы объектов, у которых tostring "заточенный" на видюху
и все осталось инкапсулировать всю выборку в этих объектах что бы не плодить грязь и излишние буквы."Лисапед" (с квадратным колесами) изобретать лучше, чем использовать готовое универсальное встроенное решение? :)
Где-то в степино это сложнее исполнить так как нужна глюкоза..Не надо глюкозы.
Нужно употреблять то, что заточено на привязку практически любых данных к визуальным (и не только к визуальным) компонентам WinForms. DataBinding - это то, что доктор прописал...
...
Рейтинг: 0 / 0
05.02.2014, 20:47
    #38551074
CvetikZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы элементов в ComboBox
Где-то в степиПрочитал <Но в жизни все течет, все меняется и случилось так>- живо цинично представил месячные у СУБДа
Ну какой тут лайфхак? - только стена...

На бОльшее соображалки не хватило??
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Индексы элементов в ComboBox / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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