Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell / 13 сообщений из 13, страница 1 из 1
30.12.2015, 08:30
    #39140441
IvanVetrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
Почему не работает этот код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
                List<string>  attachments = new List<string>();
                foreach (DataGridViewRow row in dgvFilter.Rows)
                {
                    //Если строка помечена, то считать фильтр и создать из выгруженных файлов список
                    DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells["chk"];
                    if (chk.Value == chk.TrueValue)
                        attachments.Add(reportExportToXls(row.Cells["filterWhereDataGridViewTextBoxColumn"].Value.ToString(), tbDir.Text));
                }



А этот работает
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
                List<string>  attachments = new List<string>();
                foreach (DataGridViewRow row in dgvFilter.Rows)
                {
                    //Если строка помечена, то считать фильтр и создать из выгруженных файлов список
                    DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)row.Cells["chk"];
                    if (chk.Value != chk.FalseValue && chk.Value != null)
                        attachments.Add(reportExportToXls(row.Cells["filterWhereDataGridViewTextBoxColumn"].Value.ToString(), tbDir.Text));
                }



Весь мозг себе сломал. Камрады, помогите кто чем может... Это у меня что-то с головой или это глюк c#?
...
Рейтинг: 0 / 0
30.12.2015, 08:55
    #39140454
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
Думаю, дебаг с брейкпоинтом в нужном месте тебе поможет понять
...
Рейтинг: 0 / 0
30.12.2015, 09:29
    #39140463
IvanVetrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
Pallaris,

я уже ставил брекпоинты где только можно. Сначала я нашёл косяк и он тоже был не мой. Когда в конструкторе для столбца DataGridViewCheckBoxCell задаёшь значения TrueValue = true и FalseValue = false, то Strudio формирует код в дизайнере, как: TrueValue = "true", FalseValue = "false". То есть как строковые константы, а не как булевы. Это я заметил во время отладки. Я исправил руками в дизайнере. Но теперь получается, что когда в условии if (true == true) то выполнение программы не переходит на строку:
Код: c#
1.
attachments.Add(reportExportToXls(row.Cells["filterWhereDataGridViewTextBoxColumn"].Value.ToString(), tbDir.Text));
...
Рейтинг: 0 / 0
30.12.2015, 09:33
    #39140467
IvanVetrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
IvanVetrovPallaris,

я уже ставил брекпоинты где только можно. Сначала я нашёл косяк и он тоже был не мой. Когда в конструкторе для столбца DataGridViewCheckBoxCell задаёшь значения TrueValue = true и FalseValue = false, то Strudio формирует код в дизайнере, как: TrueValue = "true", FalseValue = "false". То есть как строковые константы, а не как булевы. Это я заметил во время отладки. Я исправил руками в дизайнере. Но теперь получается, что когда в условии if (true == true) то выполнение программы не переходит на строку:
Код: c#
1.
attachments.Add(reportExportToXls(row.Cells["filterWhereDataGridViewTextBoxColumn"].Value.ToString(), tbDir.Text));



а когда в if (true !=false && true !=null) то код работает правильно
...
Рейтинг: 0 / 0
30.12.2015, 09:43
    #39140471
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
IvanVetrov,

В колонке chk значение Null разрешено?
...
Рейтинг: 0 / 0
30.12.2015, 09:50
    #39140477
IvanVetrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
Cat2,
TreeState=false, если вы об этом. В базе данных null на этом поле разрешён.
...
Рейтинг: 0 / 0
30.12.2015, 09:56
    #39140481
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
Вообще вот эта вся ботва типа обращения к ячейке, приведение bool к стрингам и обратно - она до добра не доведет. По-хорошему нужно все делать через BindingSource для грида.
...
Рейтинг: 0 / 0
30.12.2015, 13:32
    #39140619
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
PallarisВообще вот эта вся ботва типа обращения к ячейке, приведение bool к стрингам и обратно - она до добра не доведет. По-хорошему нужно все делать через BindingSource для грида.
+1
...
Рейтинг: 0 / 0
09.01.2016, 10:07
    #39143728
IvanVetrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
Pallaris,
оставил я эту затею, хоть и в теории оно и обязано работать. Сделал всё через BindingSource. Благодарю за совет.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
                List<string> attachments = new List<string>();

                foreach (DataRowView row in tFiltersBindingSource.List)
                {
                    //Если строка помечена, то считать фильтр и создать из выгруженных файлов список
                    if (bool.Parse(row["chk"].ToString()))
                        attachments.Add(reportExportToXls(row["filterWhere"].ToString(), tbDir.Text));
                }
...
Рейтинг: 0 / 0
09.01.2016, 11:04
    #39143735
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
IvanVetrov,
вообще то умиляет не компетентность
выражение
if (chk.Value == chk.TrueValue)
не что иное
if (chk.Value == null)
а выражение if (chk.Value != chk.FalseValue && chk.Value != null)
if (chk.Value != null && chk.Value != null)
гы гы масло масленное, стоит заглянуть вмсдн.
и второе:
if (chk.Value != chk.FalseValue && chk.Value != null) - это п....ц с порядком выполнения
и третье
bool.Parse(row["chk"].ToString()) это какой то анекдот про заику и дохлую лошадь ((
...
Рейтинг: 0 / 0
11.01.2016, 08:21
    #39144222
IvanVetrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
Где-то в степи,
критикуете - предложите свой вариант. Я пробовал по-разному.
...
Рейтинг: 0 / 0
11.01.2016, 09:22
    #39144246
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
IvanVetrov,
bool res;
bool res = re is bool ? (bool) re : false;
if (res)
attachments.Add(reportExportToXls(row.Cells["filterWhereDataGridViewTextBoxColumn"].Value.ToString(), tbDir.Text));
...
Рейтинг: 0 / 0
11.01.2016, 09:23
    #39144247
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell
Где-то в степиIvanVetrov,
bool res;
bool res = chk.Value is bool ? (bool) chk.Value : false;
if (res)
attachments.Add(reportExportToXls(row.Cells["filterWhereDataGridViewTextBoxColumn"].Value.ToString(), tbDir.Text));
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Кто может объяснить мне, почему не работает код DataGridViewCheckBoxCell / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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