gpt4 book ai didi

c# - (Nuget 包)AdvancedDataGridView 排序/过滤列表

转载 作者:行者123 更新时间:2023-11-30 23:01:35 27 4
gpt4 key购买 nike

介绍一下,我现在有一个数据 GridView ,其中填充了列表中的数据。

我想让用户更轻松地进行排序和过滤,所以我开始使用 ADGV .

它使用与 Excel 类似的排序和过滤类型。现在他们已经制作了所有的方法,但实际的排序/过滤是您需要自己做的事情。

我遵循了一些教程,但它们并没有真正使用 List 作为数据源。在tutorials他们使用 Sort 和 Filter 方法,而 List 不像他们在教程中那样接受。

有没有办法像他们在视频 here (4:45) 中那样使用排序字符串/过滤字符串对 linq 列表进行排序/过滤? .

最佳答案

如果您正在寻找支持排序和过滤的内置方式 List<T>使用 FilterStringSortStringAdvancedDataGridView 生成,答案是:不,没有内置的方式。过滤器在 ADGVFilterMenu 中生成据我所知,没有办法覆盖过滤器生成。

但是你可以转换你的 List<T>DataTable并简单地使用这些字符串进行排序和过滤。例如:

private void Form1_Load(object sender, EventArgs e)
{
var list = db.Products.ToList();
this.productBindingSource.DataSource = list.ToDataTable();
}
private void advancedDataGridView1_SortStringChanged(object sender, EventArgs e)
{
this.productBindingSource.Sort = advancedDataGridView1.SortString;
}
private void advancedDataGridView1_FilterStringChanged(object sender, EventArgs e)
{
this.productBindingSource.Filter = advancedDataGridView1.FilterString;
}

在上面的例子中,我使用了 ToDataTable来自 this post 的扩展方法:

public static class EnumerableExtensions
{
public static DataTable ToDataTable<T>(this IEnumerable<T> data)
{
PropertyDescriptorCollection properties =
TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name,
Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
table.Rows.Add(row);
}
return table;
}
}

关于c# - (Nuget 包)AdvancedDataGridView 排序/过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50968621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com