C# 如何在从excel文件导入的datagridview中筛选列
例如,我有一个datagridview1,其中包含从excel文件导入的数据,共有12列:日期、名称、活动、项目、时间、注释等。和1000排。 我想做的是只过滤Project列中具有项目名称的所有项目。 例如,我支持(Projectname),我想显示所有按支持行筛选的列 我有一个组合框来选择我需要在这里过滤的列(例如Project), 我试过使用这个代码,但它不起作用C# 如何在从excel文件导入的datagridview中筛选列,c#,.net,filter,C#,.net,Filter,例如,我有一个datagridview1,其中包含从excel文件导入的数据,共有12列:日期、名称、活动、项目、时间、注释等。和1000排。 我想做的是只过滤Project列中具有项目名称的所有项目。 例如,我支持(Projectname),我想显示所有按支持行筛选的列 我有一个组合框来选择我需要在这里过滤的列(例如Project), 我试过使用这个代码,但它不起作用 private void ComboBox1_SelectedIndexChanged(object sender, Ev
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") {
}
}
private void组合框1\u SelectedIndexChanged(对象发送方,事件参数e)
{
字符串projektItem=comboBox1.Items[comboBox1.SelectedIndex].ToString();
如果(项目项==“项目”){
foreach(dataGridView1.Rows中的DataRow DataRow)
{
StringBuilder过滤器=新建StringBuilder();
对于(int i=0;i
我就是这样做的。将datagridview转换为datatable
这是用于过滤的func:
如果关闭过滤器,请按住原点表返回
//datagrid to datatable
DataTable datatable = new DataTable();
datatable = (DataTable)dataGridView1.DataSource;
//datatableOrigin to hold your origin table
DataTable originTable = null;
// find Function
Public void Find(string column, string st)
{
DataRow[] dtResult;
DataTable holder = New DataTable;
//get datatable Schema
DataTable holder = datatable.Clone();
holder.Rows.Clear();
If (originTable != null)
datatable = originTable;
Else
originTable = datatable;
//select return datarow array
dtResult = datatable.Select("[" + column + "] LIKE '%" + st + "%'");
//import all your result into holder
foreach(DataRow dr In dtResult){holder.ImportRow(dr);}
//pass from holder to datatable
datatable = holder.Copy();
holder.Clear();
}
public void showDT()
{
dataGridView1.DataSource = datatable;
}
private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
// choose your column here
}
private void btn_Clicked(object sender, EventArgs e)
{
Find('YourColumn, 'your search string);
showDT();
}
您好,谢谢您的回答,但它不起作用,什么是dtResult,originTable,datatable,st.其中我只是第一行datatable dtFromGrid=newdatatable();dtFromGrid=dataGridView1.DataSource as DataTable;上半部分是如何将datagridview转换为datatableoriginTable,如果您关闭过滤器,您可以保留原始表以返回。我已经对其进行了一些编辑,我将代码从vb.net转换为C#,因此可能会出现一些systax问题,但这就是解决方法!在发现时,我们已经e第二部分中的两个部分应该是什么(字符串列,字符串………)