在C#中的DataGridview中应用数值滤镜

时间:2015-10-09 20:49:49

标签: c# winforms datagridview

我有数据gridview,并且在一个列中包含数值,我正在尝试应用show greater等过滤器,但我无法提供解决方案。

屏幕:

enter image description here

代码:

调用class方法并将值赋给datagridview

dataGridViewKeywords = filter.Filter(dataGridViewKeywords, mainValue, true);

班级档案:

class FilterDataGridView
{
    private DataGridView modifiedDGV = new DataGridView();
    private string keyword;
    private int competionScore;
    DataTable dt = new DataTable();


    public DataGridView Filter (DataGridView dgv, int value, bool isabove)
    {
        modifiedDGV.Columns.Add("keyword", "Keyword") ;
        modifiedDGV.Columns.Add("competition", "Avg. Competition Score");
        modifiedDGV.Columns.Add("moreinfo", "More Info");

        if (isabove)
        {
            for (int row = 0; row < dgv.Rows.Count; row++)
            {
                competionScore = Convert.ToInt32(dgv.Rows[row].Cells[1].Value);
                keyword = dgv.Rows[row].Cells[0].Value.ToString();

                if (competionScore > value)
                    modifiedDGV.Rows.Add(keyword, competionScore, "View");
            }
        }

        return modifiedDGV;
    }

1 个答案:

答案 0 :(得分:1)

最干净的解决方案是使用BindingSource

您在BindingSource - 类中提供了数据,并将DataGridView.DataSource设置为此BindingSource

BindingSource本身或多或少是一个更好的列表,并且还具有Filter - 属性,可让您轻松应用这些条件。这样你就不必乱用所有这些项目,甚至创建第二个DataGridView