我有数据gridview,并且在一个列中包含数值,我正在尝试应用show greater等过滤器,但我无法提供解决方案。
屏幕:
代码:
调用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;
}
答案 0 :(得分:1)
最干净的解决方案是使用BindingSource
。
您在BindingSource
- 类中提供了数据,并将DataGridView.DataSource
设置为此BindingSource
。
BindingSource
本身或多或少是一个更好的列表,并且还具有Filter
- 属性,可让您轻松应用这些条件。这样你就不必乱用所有这些项目,甚至创建第二个DataGridView
。