c# - 手动列上的高级 DataGridView
问题描述
我正在尝试使用 ADGV ( https://www.nuget.org/packages/ADGV/ ) 在 datagridview 上放置一个过滤器。但是,当我手动创建日期时间值列时,过滤器不会显示按年、月和日值进行的过滤。自动创建列时,在运行时此列会准确显示如何过滤。我想手动创建这些 DateTime 值列。我应该怎么办?
private void btnchonLop_Click(object sender, EventArgs e)
{
string TenLop = "Null"; string MaCLB = "Null"; int LichHoc = 3;
adgvHocSinhDuDK.AutoGenerateColumns = false;
adgvHocSinhDuDK.AutoGenerateContextFilters = true;
if (adgvDanhSachLop.SelectedRows.Count > 0)
{
foreach (DataGridViewRow row in adgvDanhSachLop.SelectedRows)
{
TenLop = row.Cells[2].Value.ToString();
MaCLB = row.Cells[7].Value.ToString();
LichHoc = (int)row.Cells[5].Value;
}
DataTable dt = HocSinhServices.LayHocSinhTheoLopDangKy(TenLop, MaCLB, LichHoc);
bdHocSinhDuDieuKien.DataSource = dt; //
adgvHocSinhDuDK.EnableFilter(clNgayNhapHoc); // Enabled Fitleter on NgayNhapHocColumn
}
else return;
}
通过手动列
按自动列
解决方案
我遇到了同样的问题,我已经为您提供了答案:您必须在将列ValueType
添加到您的AdvancedDataGridView
.
在您的某处designer.cs
,您有列和 adgv 的声明,然后设置 adgv 的参数,然后设置列的参数(Visual Studio 中的默认设计)。
在代码中,请遵循以下内容:
- 首先设置列的参数并添加
ValueType
:
例子 :
this.ContactDate.ValueType = typeof(System.DateTime);
- 然后在您的 adgv 中添加该列
都是因为在事件“OnColumnAdd”上激活了 DateTime 的过滤器:如果 ValueType 不是 DateTime,您将无法获得正确的过滤器。
推荐阅读
- sql - 根据mysql中的另一个活动获取行
- javascript - 如何将所有数组值按顺序放置到一列文本字段中?
- php - 集合上的 Laravel 静态索引
- python - 在 Dask 中使用 read_csv 进行列名移位
- python - 如何使用 ElementMaker 漂亮地打印使用布尔条件创建的 XML
- python - 为什么 Epoch wise Accuracy/loss 总是从高到低变化?
- python - PyCharm 没有正确识别需求
- c# - 等待 DotNET 中的锁定 - 幕后实现
- python - 如何比较空元素的列表元素?
- python - 测试字符串中的字符串列表,如果匹配则返回找到的值