首先将:DataGridViewAutoFilterColumnHeaderCell.cs、DataGridViewAutoFilterTextBoxColumn.cs 2个文件添加到项目中
然后使用下面的代码
/// <summary>
/// 绑定数据
/// </summary>
/// <param name="_DT"></param>
public void DataSource(DataTable _DT)
{
if (this.dataGridView1.Rows.Count > 0)
{
dataGridView1.DataSource = null;
}
BindingSource source = new BindingSource();
source.DataSource = _DT;
foreach (DataColumn col in _DT.Columns)
{
if (IsTextBoxColumn(col))//判断该列是否增加筛选
{
DataGridViewAutoFilter.DataGridViewAutoFilterTextBoxColumn commonColumn = new DataGridViewAutoFilter.DataGridViewAutoFilterTextBoxColumn();
commonColumn.DataPropertyName = col.ColumnName;
commonColumn.HeaderText = col.ColumnName;
commonColumn.Name = col.ColumnName;
commonColumn.Resizable = DataGridViewTriState.True;
this.dataGridView1.Columns.Add(commonColumn);
}
else
{
DataGridViewTextBoxColumn DC = new DataGridViewTextBoxColumn();
DC.DataPropertyName = col.ColumnName;
DC.HeaderText = col.ColumnName;
DC.Name = col.ColumnName;
DC.Resizable = DataGridViewTriState.True;
this.dataGridView1.Columns.Add(DC);
}
}
this.dataGridView1.DataSource = source;
}
/// <summary>
/// 判断列名是否筛选
/// </summary>
/// <param name="_DataColumn">列对象</param>
/// <returns></returns>
public bool IsTextBoxColumn(DataColumn _DataColumn)
{
if ("科目编码,科目名称,会计年份,会计月份,凭证日期,辅助名称,年度".IndexOf(_DataColumn.ColumnName) > -1)
{
return true;
}
else
{
return false;
}
}