powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
11 сообщений из 11, страница 1 из 1
LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
    #38760217
Здравствуйте!

Есть DataTable, используемый в качестве источника данных для ComboBox. Имеется ID. Нужно найти его в ComboBox, и выбрать соответствующую строку.
Есть такой код:
Код: c#
1.
2.
3.
WorkTypeComboBox.SelectedIndex =
        WorkTypeComboBox.Items.IndexOf(WorkTypeComboBox.Items.OfType<DataRow>().AsEnumerable().
         Where(Item => (ushort)Item.Field<Int16>("TW_ID") == (ushort)IDVALUE));



В результате SelectedIndex = -1

Подскажите, что не так и куда копать?

Спасибо
...
Рейтинг: 0 / 0
LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
    #38760281
В итоге нашел. Может кому пригодится, строка была модифицирована следующим образом и всё заработало:
Код: c#
1.
2.
3.
WorkTypeComboBox.SelectedIndex =
        WorkTypeComboBox.Items.IndexOf(WorkTypeComboBox.Items.OfType<DataRowView>().
         Where(Item => Convert.ToUInt16(Item[0]) == IDVALUE));
...
Рейтинг: 0 / 0
LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
    #38760290
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артемий Соболев,

да, DataRowView коварен
...
Рейтинг: 0 / 0
LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
    #38760900
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артемий СоболевВ итоге нашел
если бы использовал Cast вместо OfType нашёл бы сразу
...
Рейтинг: 0 / 0
LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
    #38761353
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationАртемий СоболевВ итоге нашел
если бы использовал Cast вместо OfType нашёл бы сразуДа, и ComboBox.SelectedItem немного упростил бы жизнь...
...
Рейтинг: 0 / 0
LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
    #38769914
Спасибо за подсказки.

Cast не использовал только в силу того, что с LINQ я знаком не более полугода, и OfType я пока чаще пользую, поэтому про него сразу вспомнил, а про Cast только в книжке читал.

SelectedItem не намного упрощает в данном случае жисть, так как всё-равно object искать надо по имеющемуся ID.
...
Рейтинг: 0 / 0
LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
    #38769962
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvpationпропущено...

если бы использовал Cast вместо OfType нашёл бы сразуДа, и ComboBox.SelectedItem немного упростил бы жизнь...

Может selectedvalue ?
...
Рейтинг: 0 / 0
LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
    #38770143
В общем итоге, используя вышеперечисленные предложения и ещё раз перечитав очень умную книжку за авторством Адама Фримена и Джозефа Ратца-мл. (LINQ язык интегрированных запросов с С# 2010), переделал команду и выщло следующее:

Код: c#
1.
WorkTypeComboBox.SelectedItem = WorkTypeComboBox.Items.Cast<DataRowView>().Single(Item => Convert.ToUInt16(Item[0]) == IDVALUE);



Всем спасибо за участие
...
Рейтинг: 0 / 0
LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
    #38770228
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306sphinx_mvпропущено...
Да, и ComboBox.SelectedItem немного упростил бы жизнь...

Может selectedvalue ?Можно... ЕСЛИ допустить, что оно СОВПАДАЕТ с полем поиска... И "в общем случае" это совсем не обязательно. А какое на самом деле поле ТС использует для него хрустальный шар почему-то не показывает...
...
Рейтинг: 0 / 0
LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
    #38775779
Хрустальный шар - устаревшая и не точная технология, потому и не показывает. :-)

Как уже писал выше, c# использую не более полугода. Пытался пробовать раньше через selectedvalue - вернула -1, забил, больше не использовал. Возможно что-то не правильно делал. Хотя по логике (как описано на MSDN) всё должно нормально работать.
А так - да, искомый ID совпадает с valuemember. Попробую на днях ещё раз поэкспериментировать с установкой этого значения, может и не понадобиться использовать тут LINQ.
В любом случае поиск по DataTable тоже опыт, который может пригодиться. Может кому надо, будет искать...
...
Рейтинг: 0 / 0
LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
    #38776210
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артемий СоболевЗдравствуйте!

Есть DataTable, используемый в качестве источника данных для ComboBox. Имеется ID. Нужно найти его в ComboBox, и выбрать соответствующую строку.
Есть такой код:
Код: c#
1.
2.
3.
WorkTypeComboBox.SelectedIndex =
        WorkTypeComboBox.Items.IndexOf(WorkTypeComboBox.Items.OfType<DataRow>().AsEnumerable().
         Where(Item => (ushort)Item.Field<Int16>("TW_ID") == (ushort)IDVALUE));




В результате SelectedIndex = -1

Подскажите, что не так и куда копать?

Спасибо

Код: c#
1.
2.
3.
WorkTypeComboBox.ValueMember = "TW_ID";
...
WorkTypeComboBox.SelectedValue = IDVALUE

;
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ - DataTable в ComboBox. Установка SelectIndex по имеющемуся ID
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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