|
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
|
||||||
WPF Программная имитация19.11.2019, 04:54. Показов 2505. Ответов 29
Добрый день, не могу справиться с проблемой:
Есть tabcontrol и item (tabitem1, tabitem2) На первом при старте заполняется datagrid (grid) 1 столбец заполняется датами, при переходе на tabitem2 заполняется другой datagrid (grid_day), данные с базы, поэтому есть кнопка обновить таблицу (button_day) Если тыкать руками то все работает исправно. Я добавил обработчик события двойного щелчка по ячейке с датой первого datagrid (grid) и прописал
Если снова перейти по двойному щелчку с tabitem1, то история повторяется. При этом если это первое нажатие сделать в свободное место любого элемента ги, то далее все работает в штатном режиме. Проходил пошагово по телу программы как физически тыкал так и программно маршруты не отличаются Что можете посоветовать?
0
|
||||||
| 19.11.2019, 04:54 | |
|
Ответы с готовыми решениями:
29
|
|
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
|
|
| 19.11.2019, 08:13 [ТС] | |
|
Попросили (читай заказчик) реализовать переход в tabitem2 по двойному щелчку по дате в первом столбце grid
и этот переход сопровождается таким багом, он не критичный, но перфекционизм не дремлет
0
|
|
|
Модератор
|
|
| 19.11.2019, 10:05 | |
|
vovgordeev, именно по ячейке дата в строке?
Если э да, то эту ячейку надо заполнить Button с контекстом привязанным к дате. И добавить команду или обработчик к кнопке. Если решение MVVM, то параметр команды надо тоже привязать к дате. Если делать обработчик, то в нём получать дату из контекста. Добавлено через 14 минут vovgordeev, упс.... Не обратил внимание на двойной клик. Надо немного больше инфы о вашей реализации. У вас MVVM решение? Как вы заполняете источник DataGrid? И покажите разметку DataGrid. Лучше даже полность XAML.
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
|
|||||||||||
| 19.11.2019, 10:53 [ТС] | |||||||||||
|
Элд Хасп,
-Как вы заполняете источник DataGrid? Через DataSet и SqlDataAdapter -И покажите разметку DataGrid. -Лучше даже полность XAML. Не знаю чем она поможет, Через класс датагридхелпер к ячейкам таблицы датагрда привязываются множество свойств, так же при форматировании таблицы к нужным ячейкам привязывается событие даблклик в моем случае. в описании этого события как раз и прописаны три строчки
ЛС откроется я так понимаю после 3 сообщения, смогу вам отправить видео фрагмент, для наглядности
0
|
|||||||||||
|
Модератор
|
|
| 19.11.2019, 12:23 | |
|
vovgordeev, чё-то у меня нехорошие предчувствия...
XAML у вас почти пустой. Нет коллекции DataGrid, не заданы колонки, шаблоны.... Вы случаем в CB окна не заполняете DataGrid каждую ячейку отдельно?
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
|
|
| 19.11.2019, 14:51 [ТС] | |
|
Элд Хасп, предчувствий не надо) заполняю я datagrid через DataSet и SqlDataAdapter
0
|
|
|
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
|
|
| 19.11.2019, 14:58 | |
|
vovgordeev, если предчувствий не надо, то зачем писали на борд? Делайте как делаете, заказчик оценит
![]() Если же вы не хотите плодить говнокод, особено на заказ. То не поленитесь и прочтите про MVVM, выше ув. Элд Хасп дал решение, только не разжевал его.
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
|
|
| 19.11.2019, 15:35 [ТС] | |
|
Элд Хасп, да, все верно
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
|
|
| 19.11.2019, 16:10 [ТС] | |
|
Элд Хасп, количество колонок постоянно, DataSet передает тип данных из sql;
Вот для наглядности проблемы (13,17,27 с видно как после нажатия на ячейку происходит "Сброс")
0
|
|
|
Модератор
|
|
| 19.11.2019, 19:18 | |
|
vovgordeev, я попробую объяснить один раз.
Навязывать не хочу. Захотите учиться - значит продолжим. Не захотите - ваше дело. DataSet, DataTsble, SQL и т.п. - это все типы для Модели. И Модель они покидать не должны. Из Модели выходят уже структурированные данные, чей тип никак не связан со способом их хранения. Наиболее часто используются DTO типы. И работа с Моделью происходит не напрямую, а через интерфейсы. Если бы у вас была нормальная VM. В XAML были бы только привязки к ней и шаблоны для отображения. Вашу задачу можно было бы решить очень просто. В том же виде что у вас, надо работать с визуальными предоставлением элементов. Перехватывать события и на лету переопределять элементы, их свойства. Это возможно. Но очень трудно. Так никто не делает. И очень удивлюсь, если кто-то захочет разбираться с вашей проблемой. Для нормального решения, вам надо целиком переделать всё приложение. Я не думаю что вы это будете делать. Лучше оставьте всё как есть. А в будущем обращайтесь за советом ещё на этапе проектирования архитектуры приложения. Удачи!
1
|
|
|
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
|
|
| 20.11.2019, 08:14 [ТС] | |
|
Элд Хасп, учиться это всегда хорошо.
Заново, так заново. С чего начнем?
0
|
|
|
Модератор
|
|
| 20.11.2019, 08:58 | |
|
vovgordeev, MVVM решение надо начинать с проектирования архитектуры, постановки ТЗ приложения и всех частей приложения.
Прочитайте пост Как создавалось приложение. Сможете такие ТЗ сами сделать? Если нет - опишите своими словами. Попробуем сделать совместно.
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
|
|
| 20.11.2019, 10:52 [ТС] | |
|
Элд Хасп, опишу функционал для начала
тз: 1. Окно состоит из табконтрола с 2 вкладками на первой: расположена таблица1 и календарь. На второй таблица2, текст, кнопка печать. 2. При открытии программы отображается\заполняется таблица1. Источник данных MS SQL. 2. Первый солбец содержит даты начиная с текущей +7 дней. Остальные содержат номера заявок. 3. Количество столбцов этой таблицы не определено (зависит от количества заявок в этот день). множество запросов к SQL по каждой дате. 4. Таблица1 имеет сортировку, таким образом чтоб одинаковые номера заявок находились друг под другом 4. Календарь с возможностью выбора одного диапозона дат, после выбора таблица перестраивается согласно выбранным датам. При выборе больше 21 дня задется вопрос о необходимости такого решения. 5. При выборе строки таблицы1, происходит заполнение таблицы2 согласно дате в первом столбце (один запрос к SQL) 6. Имя вкладки 2 заполнятся также согласно дате 7. При переходе на вкладку 2 отображется заполненная таблица2 8. При выборе строки таблицы 2 происходит заполнение текста, выбрать можно как диапозон так и множесто диапозонов, заполнение происходит согласно выбранным строкам, по даннм полученным из запроса 9. Текст должн быть отформатирован по шаблону 9. Кнопка печать отправляет содержимое текса на печать 10. Стилизация таблиц идет согласно контента 11. Каждая заполненная ячейка таблицы 1 имеет строку тултип 12. Двойной щелчок по любой заполненной ячейке таблицы 1 вызывает окно с информацией 13. Двойной щелчок по дате таблицы 1 вызывает заполнение таблицы 2 и переход на 2 вкладку 14. Таблица 2 должна иметь возможность сортировки по 2 столбцам одновременно Пожалуй это весь функционал
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
|
|
| 20.11.2019, 13:18 [ТС] | |
|
Элд Хасп, для первой таблицы не постоянно, для второй постоянно на ней у меня баг, про нее и говорил
0
|
|
|
Модератор
|
|
| 20.11.2019, 13:31 | |
|
vovgordeev, если количество колонок переменно, то DataTable придётся оставить.
Тогда такой вопрос. В каком формате данные в колонке дат? string или DateTime? Есть ли ещё колонки с датами?
0
|
|
|
0 / 0 / 0
Регистрация: 19.11.2019
Сообщений: 15
|
|||||||||||
| 21.11.2019, 04:07 [ТС] | |||||||||||
|
Элд Хасп,
в таблице2 есть 2 столбца с датой, в функцию
0
|
|||||||||||
| 21.11.2019, 04:07 | |
|
Помогаю со студенческими работами здесь
20
Программная авторизация на сайте. Программная авторизация на сайте Программная аутентификация на сайте Программная генерация события Программная отправка комментария на сайт Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|