例如,我有一个datagridview1,其中包含从excel文件导入的数据,并且有12列:日期,名称,活动,项目,时间,注释等。和1000行。我想要做的是仅在项目列中使用项目名称过滤所有内容。例如,我有一个(Projectname)支持,我想按支持行显示所有列filtyring。我有组合框来选择我需要对其进行过滤的列(例如Project),我尝试使用此代码,但无法正常工作。
谢谢!
enter code here
private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string projektItem = comboBox1.Items[comboBox1.SelectedIndex].ToString();
if (projektItem == "Project") {
foreach (DataRow dataRow in dataGridView1.Rows)
{
StringBuilder filter = new StringBuilder();
for (int i = 0; i < dataGridView1.Columns.Count - 1; i++)
{
filter.Append(dataRow[i].ToString());
filter.Append("\t");
}
dataGridView1.DataSource = filter.ToString();
}
if (projektItem == "Name") {
}
if (projektItem == "Aktivity") {
}
}
这就是我的做法。将datagridview转换为datatable
DataTable dtFromGrid = new DataTable();
dtFromGrid = dataGridView1.DataSource as DataTable;
这是过滤器的功能:如果关闭过滤器,请按住原始表以返回]
Public void Find(string column, string) { DataRow() dtResult; DataTable holder = New DataTable DataTable holder = datatable.Clone() holder.Rows.Clear() If (originTable != null) datatable = originTable Else originTable = datatable dtResult = datatable.Select("[" & column & "] LIKE '%" & st & "%'") foreach(DataRow dr In dtResult){holder.ImportRow(dr)} datatable = holder.Copy() holder.Clear()}
dataGridView1.DataSource =数据表;