powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как присвоить значение из enum в datacolumn?
6 сообщений из 6, страница 1 из 1
Как присвоить значение из enum в datacolumn?
    #39455142
Posohov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При записи в DataColumn из Enum записывается название элемента, а не его значение, в то время как в переменную значение из Enum записывается правильно.

Имеем:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Enum СтатусЗаказа As Integer
    Новый = 10
    Принят = 11
    ОжидаетОплаты = 13
    Оплачен = 14
    Выполнен = 12
    Отменен = 15
  End Enum
...
dtЗаказ = New DataTable
Dim cmdЗаказ As New MySqlCommand(
 "SELECT GROUP_CONCAT(IF(IBLOCK_PROPERTY_ID = " & СвойстваЗаказа.Статус & ", VALUE, Null)) AS Status
...
 FROM b_iblock_element, b_iblock_element_property
...;", cnnMySQL)
  dtЗаказ.Clear()
  dtЗаказ.Load(cmdЗаказ.ExecuteReader, LoadOption.OverwriteChanges)
dtЗаказ(0)("Status") = СтатусЗаказа.Принят ' здесь записывает название значения "Принят" вместо самого значения 11.

Dim intStatus As Integer = СтатусЗаказа.Принят
dtЗаказ(0)("Status") = intStatus 'А здесь записывает правильно - значение 11.



Где собака зарыта, никто не знает?
Как записать в DataTable правильное значение из Enum?
...
Рейтинг: 0 / 0
Как присвоить значение из enum в datacolumn?
    #39455238
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PosohovПри записи в DataColumn из Enum записывается название элемента, а не его значение, в то время как в переменную значение из Enum записывается правильно.

Имеем:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Enum СтатусЗаказа As Integer
    Новый = 10
    Принят = 11
    ОжидаетОплаты = 13
    Оплачен = 14
    Выполнен = 12
    Отменен = 15
  End Enum
...
dtЗаказ = New DataTable
Dim cmdЗаказ As New MySqlCommand(
 "SELECT GROUP_CONCAT(IF(IBLOCK_PROPERTY_ID = " & СвойстваЗаказа.Статус & ", VALUE, Null)) AS Status
...
 FROM b_iblock_element, b_iblock_element_property
...;", cnnMySQL)
  dtЗаказ.Clear()
  dtЗаказ.Load(cmdЗаказ.ExecuteReader, LoadOption.OverwriteChanges)
dtЗаказ(0)("Status") = СтатусЗаказа.Принят ' здесь записывает название значения "Принят" вместо самого значения 11.

Dim intStatus As Integer = СтатусЗаказа.Принят
dtЗаказ(0)("Status") = intStatus 'А здесь записывает правильно - значение 11.



Где собака зарыта, никто не знает?
Как записать в DataTable правильное значение из Enum?
в чем вопрос? вы сами дали правильный ответ, DataTable отображает данные в зависимости от типа, если тип Enum, он отображается название элемента, если int значение, преобразуйте поле в тип целого и отображайте целое.
...
Рейтинг: 0 / 0
Как присвоить значение из enum в datacolumn?
    #39455273
Posohov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesв чем вопрос? вы сами дали правильный ответ, DataTable отображает данные в зависимости от типа, если тип Enum, он отображается название элемента, если int значение, преобразуйте поле в тип целого и отображайте целое.
В том то и дело, что при загрузки данных в DataTable полю Status присваивается тип String, а не Enum, но в именно в этом и оказалась проблема.
Вот если этому полю принудительно задать тип Int, тогда из Enum в него записывается значение элемента, а не его название.

Только вот скажите мне, почему в переменную String из Enum записывается значение элемента, а в поле DataTable типа String его название?
Код: vbnet
1.
2.
      Dim strStatus As String = СтатусЗаказа.Принят
      dtЗаказ(0)("Status") = strStatus 'Здесь записывает правильно - значение 11.


В чем тут разница?
...
Рейтинг: 0 / 0
Как присвоить значение из enum в datacolumn?
    #39455411
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PosohovТолько вот скажите мне, почему в переменную String из Enum записывается значение элемента, а в поле DataTable типа String его название?
Код: vbnet
1.
2.
      Dim strStatus As String = СтатусЗаказа.Принят
      dtЗаказ(0)("Status") = strStatus 'Здесь записывает правильно - значение 11.



В чем тут разница?В первом случае берется значение переводится в стринг, в случае с дататабле присваивается enum объекту, потом берется ToString().

ЗЫ. В Шарпе вообще не получится enum присвоить к стрингу без явного приведения.
...
Рейтинг: 0 / 0
Как присвоить значение из enum в datacolumn?
    #39455482
Posohov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
refreg,
Ну да бог с ними, с этими нюансами, главное механизм стал понятен и решение нашлось.
Спасибо за поддержку!
...
Рейтинг: 0 / 0
Как присвоить значение из enum в datacolumn?
    #39456485
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Posohov
Код: vbnet
1.
dtЗаказ(0)("Status") = СтатусЗаказа.Принят



Код: c#
1.
dtЗаказ(0)("Status") = (int)СтатусЗаказа.Принят
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как присвоить значение из enum в datacolumn?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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