Здравствуйте. Очень нужна ваша помощь. Есть приложение на winform, связанное с базой данных. С помощью Entity Framework выводится таблица (на datagridwiew), есть combocheckbox, в котором можно выбрать поля. Пользователь выбирает поле и по этому полю выводится общее количество, общая сумма и само выбранное поле. Привожу скрин,чтоб было понятнее, как все работает. Выборка осуществляется с помощью linq, например:
if (checkedListBox1.SelectedItem == "date")
{
var query = from order in ct.Registration.ToList()
group order by order.date into g
select new
{
Date = g.Key,
Quantity = g.Sum(order => order.quantity),
Amount= g.Sum(order => order.amount)
};
dataGridView1.DataSource = query.ToList();
}
Задача стоит вот в чем: нужно реализовать возможность выбрать несколько полей. На втором скрине показано, что выбрано поле date. А нужно, чтобы можно было выбрать, например date и company. Как это можно сделать? Возможно ли это реализовать, если используется Entity Framework? Так же желательно не использовать combocheckbox, а просто поставить чекбоксы на каждой колонке(чтобы не привязывать колонку к ее названию)
Вы пишите:
var query = from order in ct.Registration.ToList()...
Это читается как "вытяни все данные из таблицы Registration...". Вы приводите IQueryable к IEnumerable. Это не нужно (зачем?). Это нужно будет после построения выборки.
Итого получаем:
var registrations = ct.Registration.OrderBy(r => r.date).ToList()
Далее.
Не уверен, что вам надо при каждом показе/скрытии колонки ползти в базу. Достаточно будет просто при инициализации загрузить данные и после изменять видимость колонок у DataGridView контрола.
Вы можете использовать CheckedListBox.CheckedItems. Но к данной задаче это не совсем подходит, ибо мы можем скрыть колонки, не включенные в этот CheckedListBox (quantity, например). Поэтому можно поступить так:
foreach (var column in dataGridView1.Columns)
{
var item = checkedListBox1.Items.FirstOrDefault(i => i.Text == colunm.Name);
if (item != null)
{
column.Visible = item.Selected;
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей