首页 > 解决方案 > 手动列上的高级 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;
    }

通过手动

通过手动列

在此处输入图像描述

按自动列

标签: c#winformsdatagridview

解决方案


我遇到了同样的问题,我已经为您提供了答案:您必须在将列ValueType添加到您的AdvancedDataGridView.

在您的某处designer.cs,您有列和 adgv 的声明,然后设置 adgv 的参数,然后设置列的参数(Visual Studio 中的默认设计)。

在代码中,请遵循以下内容:

  1. 首先设置列的参数并添加ValueType

例子 : this.ContactDate.ValueType = typeof(System.DateTime);

  1. 然后在您的 adgv 中添加该列

都是因为在事件“OnColumnAdd”上激活了 DateTime 的过滤器:如果 ValueType 不是 DateTime,您将无法获得正确的过滤器。


推荐阅读