1 / 1 / 2
Регистрация: 18.12.2018
Сообщений: 149
|
|
1 | |
Datagrid в WPF. Задать ячейке значение null15.02.2019, 17:00. Показов 4659. Ответов 9
Метки нет (Все метки)
Привет! Ребят подскажите плз как мне удалить (не программно а просто тыкая мышкой и нажимая на что-то на клаве) из ячейки datagrid значение так чтоб оно превратилось в null а не в пустую строку. Тоесть мне надо чтоб ячейка была null а не ''.
Спасибо! Добавлено через 4 часа 1 минуту Тема не актуальна. Проблему решить средствами C# и WPF не удалось.... Написал триггер который ловит запрос UPDATE и проверяет какие поля заполнены и если заполнены неверными значениями меняет на null. Если кто столкнулся с проблемой пишите! Скину триггер в ответ как допишу)))
0
|
15.02.2019, 17:00 | |
Ответы с готовыми решениями:
9
WPF, DataGrid и многострочие в ячейке WPF задать триггер стиля для всех ячеек DataGrid Присвоить значение к конкретной ячейке Datagrid Проверка наличия значение не null в ячейке компонента dataGridView колонки типа ComboBox |
1 / 1 / 2
Регистрация: 18.12.2018
Сообщений: 149
|
||||||||||||||||
16.02.2019, 12:00 [ТС] | 3 | |||||||||||||||
Как и обещал вот мой вариант решения проблемы)
Начнем сначала с описания ситуации для полного понимания того чувства безысходности которое заставило меня выдумывать этот костыль. Для хранения результатов обзвона клиентов и выяснения их мнения о компании где я работаю мне было поручено сделать БД на MS SQL и написать программу для занесения данных в БД. С задачей я благополучно справился и сделал вот такую табличку(см. вложения) для хранения всей информации. Так как сотрудники обзванивающие клиентов в компуктерах не шарят я решил лишний раз подстраховаться и задал полям которые хранят ответы на вопросы тип float и прописал в БД ограничение CHECK так чтоб в эти колонки можно было записать число от 1 до 5 Кликните здесь для просмотра всего текста
(эта моя идея с типами данных и ограничением и сыграла со мной потом злую шутку)
Так же мной была написанна программа для администратора который бы мог править любое поле в табличке. Для написания ПО админа, я использовал datagrig и вот такой код: Код для вывода информации из таблицы в datagrid
Проблема заключалась в том что поля формата даты и чисел в базе при загрузке в datagrid через SQLAdapter полностью поддерживает типизацию. Тоесть если у вас поле в БД имеет тип данных число то даже пустую строку вы в эту ячейку вписать не сможете. При попытке зайти в ячейку и кнопкой Backspace удалить все из ячейке то ее контур начинает гореть красным и все остальные ячейки блокируются. Долгий и нудный поиск в гугле и яндексе ничего не дал и как выключить все эти проверки на тип я не понял (однако, допускаю что способ есть....). А теперь к сладкому. Единственным возможным решением которое я смог найти оказалось написать непосредственно в БД триггер типа INSTEAD OF UPDATE. Триггер ловит любой запрос на обновление записей и благополучно проверяет какие поля в запросе пытаются обновить и что туда пытаются записать. Вот он, величайший из всех моих костылей созданных при работе на этом проекте.
Мораль сей басни такова: 1. 1000 и 1 раз проверьте все ли нормально отрабатывается при записи из приложения в БД если в БД есть какие то ограничения или используется пестрая палитра типов данных. 2. Ни в коем случае не используйте этот способ если вашей БД будут пользоваться много человек. В моем случае штат небольшой и такой способ имеет право на жизнь....(с пособием по инвалидности) 3. Придумывайте какой то другой способ взаимодействия с БД из приложение но только не SQLAdapter и вот это все. Ужас и анал-пожар потом разбираться с тем как он там автоматически формирует запрос и какой в итоге запрос отсылается на сервер БД. Я честно пробовал делать через ObservableCollection как мне в какой то другой теме советовал Элд Хасп, но я так и не смог придумать способ как мне сгенерить запросы для обновления измененых ячеек. Единственное что я смог придумать это попытаться запихнуть отправку запроса на UPDATE в PropertyChanger (да да, INotifyPropertiChanged тоже использовал). Поэтому для тех у кого таблицы в БД состоят исключительно из полей типа nvarchar/varchar/text да и любой строковый тип, использование SQLAdapter будет очень неплохим и быстрым способом, однако если вам нужно контролировать какие значения пытаются записать пользователи то откажитесь от этого варианта и мозгуйте другой способ. (Если не придумаете триггер вам в помощь ахаха)
0
|
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
|
|
18.02.2019, 11:22 | 4 |
все-таки нужно вам разбираться с mvvm + entityframework. намного проще и удобней.
0
|
1 / 1 / 2
Регистрация: 18.12.2018
Сообщений: 149
|
|
18.02.2019, 11:40 [ТС] | 5 |
hamin, Согласен что надо, но пока времени нет, до конца с ним разобраться
0
|
1 / 1 / 2
Регистрация: 18.12.2018
Сообщений: 149
|
|
18.02.2019, 12:31 [ТС] | 7 |
hamin, Посмотрел тему, идея как аэвывести данные мне ясна а вот как записывать в БД измененный значения. Я к тому что когда пользователь меняет значение в ячейке дата грид, то как отправить запрос типа update dB set наше_поле where ацди_поля = такому то.... Или это все есть в Entity framework даёт такую возможность ?
0
|
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
|
||||||
18.02.2019, 12:36 | 8 | |||||
Сообщение было отмечено Stas9700 как решение
Решение
Stas9700,
в энтити это автоматом реализовано. Как только изменяется какое-либо значение ячейки, контекст об этом знает.. т.е. вы меняете в датагриде, к примеру, значение ячейки и в вашей вьюмодели можно об этом узнать и вывести, к примеру, окно о сохранении данных.. типа того:
0
|
1 / 1 / 2
Регистрация: 18.12.2018
Сообщений: 149
|
|
18.02.2019, 13:04 [ТС] | 9 |
hamin, спасибо большое!!!
0
|
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
|
|
19.02.2019, 22:51 | 10 |
Stas9700,
сюда не смог добавить, т.к. проект весит больше позволенных 20 метров, поэтому качайте отсюда будут вопросы - задавайте
1
|
19.02.2019, 22:51 | |
19.02.2019, 22:51 | |
Помогаю со студенческими работами здесь
10
Получить значение ячейки datagrid wpf Как задать активной ячейке значение? Datagrid в ячейке Datagrid c корректным отображением границ Можно ли в определенной ячейке задать значение дата, которая будет постоянно изменяться в зависимости от даты на календаре Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |