Core WPF - Table in GUI
От: CyberRussia  
Дата: 10.09.20 19:20
Оценка:
Добрый день,

Работаю с .net core, приложение WPF (практически нет с ним опыта).
Нужно сделать форму с таблицей (из БД), где некоторые ячейки будут представлять собой выпадающие списки с данными. При этом практически по всем полям пользователь может иметь возможность выбора фильтрации по значению. И, само собой, сортировка по почти любому полю.
В WinForms или ASP.NET с такой задачей неплохо справляется DevExpress.
Однако он платный и я не уверен, что заказчик согласится купить ради относительно небольшого проекта.
Есть ли альтернативы?

И сразу второй вопрос. Данные будут браться из БД посредством linq2db — есть ли возможность подружить GUI с linq2db так, чтобы по фильтрам выбранным пользователем самостоятельно строился запрос в БД?
Re: Core WPF - Table in GUI
От: Ночной Смотрящий Россия  
Дата: 10.09.20 19:55
Оценка:
Здравствуйте, CyberRussia, Вы писали:

CR>Однако он платный и я не уверен, что заказчик согласится купить ради относительно небольшого проекта.


А при чем тут заказчик? Лицензия покупается на разработчика.

CR>Есть ли альтернативы?


Есть. Штатный DataGrid вполне справится, но придется повозиться чуть больше.

CR>И сразу второй вопрос. Данные будут браться из БД посредством linq2db — есть ли возможность подружить GUI с linq2db так, чтобы по фильтрам выбранным пользователем самостоятельно строился запрос в БД?


Что значит самостоятельно? Преобразовать пожмяканные кнопки в expression tree тебе таки придется.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[2]: Core WPF - Table in GUI
От: CyberRussia  
Дата: 10.09.20 20:01
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:
CR>>Однако он платный и я не уверен, что заказчик согласится купить ради относительно небольшого проекта.
НС>А при чем тут заказчик? Лицензия покупается на разработчика.
Разработчик в моем лице в настоящее время финансово не готов на такую покупку. А переложить расход в конкретный проект это нужно согласие заказчика.

CR>>Есть ли альтернативы?

НС>Есть. Штатный DataGrid вполне справится, но придется повозиться чуть больше.
Хотелось бы вот это "чуть дольше" существенно сократить

CR>>И сразу второй вопрос. Данные будут браться из БД посредством linq2db — есть ли возможность подружить GUI с linq2db так, чтобы по фильтрам выбранным пользователем самостоятельно строился запрос в БД?

НС>Что значит самостоятельно? Преобразовать пожмяканные кнопки в expression tree тебе таки придется.
Может путаю, уже года два с DevExpress не работал. Но вроде их DataGrid, если у него источником данные выступает DataView способен самостоятельно фильтровать данные. Но эта фильтрация, как я помню, идет уже на стороне клиента.
Re[3]: Core WPF - Table in GUI
От: Ночной Смотрящий Россия  
Дата: 10.09.20 20:03
Оценка:
Здравствуйте, CyberRussia, Вы писали:

CR>Но вроде их DataGrid, если у него источником данные выступает DataView способен самостоятельно фильтровать данные. Но эта фильтрация, как я помню, идет уже на стороне клиента.


Вот именно. А если хочешь server side — там нужно подписаться на событие и самому сгенерировать запрос.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[4]: Core WPF - Table in GUI
От: CyberRussia  
Дата: 10.09.20 20:04
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Вот именно. А если хочешь server side — там нужно подписаться на событие и самому сгенерировать запрос.
То есть "в лоб" подружить с linq2db не выйдет? Все равно придется писать код обработки событий фильтров и генерацию соответствующего запроса в БД.
Re[5]: Core WPF - Table in GUI
От: Ночной Смотрящий Россия  
Дата: 10.09.20 20:43
Оценка:
Здравствуйте, CyberRussia, Вы писали:

НС>>Вот именно. А если хочешь server side — там нужно подписаться на событие и самому сгенерировать запрос.

CR>То есть "в лоб" подружить с linq2db не выйдет?

Прилагая ноль усилий — точно нет. Возможно есть что то готовое для EF и OData.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[6]: Core WPF - Table in GUI
От: CyberRussia  
Дата: 10.09.20 20:48
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Прилагая ноль усилий — точно нет. Возможно есть что то готовое для EF и OData.
Понятно. В любом случае это не проблема, и уж тем более не главная.

Вот потенциальная проблема это GUI контрол. Есть альтернатива DevExpress и штатному DataGrid?
Re[7]: Core WPF - Table in GUI
От: Ночной Смотрящий Россия  
Дата: 10.09.20 21:01
Оценка: +1
Здравствуйте, CyberRussia, Вы писали:

CR>Вот потенциальная проблема это GUI контрол. Есть альтернатива DevExpress и штатному DataGrid?


Самый популярный — https://xceed.com/en/our-products/product/toolkit-plus-for-wpf наверное, но он тоже небесплатен. Неплохие гриды у Telerik и ComponentOne, тоже, понятно, небесплатные. Чего то приличного и бесплатного не встречал.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[5]: Core WPF - Table in GUI
От: Jack128  
Дата: 11.09.20 07:27
Оценка: 10 (1)
Здравствуйте, CyberRussia, Вы писали:

CR>Здравствуйте, Ночной Смотрящий, Вы писали:

НС>>Вот именно. А если хочешь server side — там нужно подписаться на событие и самому сгенерировать запрос.
CR>То есть "в лоб" подружить с linq2db не выйдет? Все равно придется писать код обработки событий фильтров и генерацию соответствующего запроса в БД.

По идее — не придется
Re: Core WPF - Table in GUI
От: Danchik Украина  
Дата: 11.09.20 07:58
Оценка:
Здравствуйте, CyberRussia, Вы писали:

CR>Добрый день,


CR>Работаю с .net core, приложение WPF (практически нет с ним опыта).

CR>Нужно сделать форму с таблицей (из БД), где некоторые ячейки будут представлять собой выпадающие списки с данными. При этом практически по всем полям пользователь может иметь возможность выбора фильтрации по значению. И, само собой, сортировка по почти любому полю.
CR>В WinForms или ASP.NET с такой задачей неплохо справляется DevExpress.
CR>Однако он платный и я не уверен, что заказчик согласится купить ради относительно небольшого проекта.
CR>Есть ли альтернативы?

CR>И сразу второй вопрос. Данные будут браться из БД посредством linq2db — есть ли возможность подружить GUI с linq2db так, чтобы по фильтрам выбранным пользователем самостоятельно строился запрос в БД?


Нужно чтобы грид умел работать с IQueryable. DevExpress умеет.
Также можете пробовать самому генерить IQueryable. Eсли мало опыта работы с ним, то можно взять https://github.com/zzzprojects/System.Linq.Dynamic.Core
Re[2]: Core WPF - Table in GUI
От: CyberRussia  
Дата: 11.09.20 11:06
Оценка:
D>Нужно чтобы грид умел работать с IQueryable. DevExpress умеет.
Окей. linq2db предоставляет класс с результатом реализующим интерфейс IQueryable. Берем DevExpress. Забыл как в нем класс грида называется. Означает ли, что я могу просто написать DataGrid.DataSource = MyDataBaseDB.MyReport и "забыть" о написании кода для реализации фильтров по выбору оператора?
, где DataGrid — объект грида DevExpress
MyDataBaseDB — класс сгенерированный linq2db для доступа к БД
Re[3]: Core WPF - Table in GUI
От: Danchik Украина  
Дата: 11.09.20 11:09
Оценка:
Здравствуйте, CyberRussia, Вы писали:

D>>Нужно чтобы грид умел работать с IQueryable. DevExpress умеет.

CR>Окей. linq2db предоставляет класс с результатом реализующим интерфейс IQueryable. Берем DevExpress. Забыл как в нем класс грида называется. Означает ли, что я могу просто написать DataGrid.DataSource = MyDataBaseDB.MyReport и "забыть" о написании кода для реализации фильтров по выбору оператора?
CR>, где DataGrid — объект грида DevExpress
CR>MyDataBaseDB — класс сгенерированный linq2db для доступа к БД

Именно так https://docs.devexpress.com/WPF/120297/controls-and-libraries/data-grid/binding-to-data/binding-to-any-data-source-with-virtual-sources/how-to-bind-to-iqueryable

Нужно понимать что DevExpress это еще и репортинг и экспорт в одной коробке
Отредактировано 11.09.2020 11:14 Danchik . Предыдущая версия .
Re[4]: Core WPF - Table in GUI
От: CyberRussia  
Дата: 16.09.20 19:58
Оценка:
Здравствуйте, Danchik, Вы писали:
D>Именно так https://docs.devexpress.com/WPF/120297/controls-and-libraries/data-grid/binding-to-data/binding-to-any-data-source-with-virtual-sources/how-to-bind-to-iqueryable
Попробовать повторить этот код для своих данных. В гриде DevExpress (в шапке) пропали возможности задать фильтр и сортировку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.