【问题标题】:How add filter to datagridview如何将过滤器添加到 datagridview
【发布时间】:2016-03-24 16:56:05
【问题描述】:

我正在尝试将 csv 文件加载到 datagridview 现在我想向 datagridview 添加过滤

怎么办? 这是我读取和加载 csv 文件的方法

openFileDialog1.InitialDirectory = @"C:\";
openFileDialog1.Title = "Open CSV Files";
openFileDialog1.CheckFileExists = true;
openFileDialog1.CheckPathExists = true;
openFileDialog1.DefaultExt = "CSV";
openFileDialog1.Filter = "CSV files (*.csv)|*.csv|All files(*.*)|*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.RestoreDirectory = true;
try
{
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        string csvPath = openFileDialog1.FileName;
        string rowValue;
        // int rowValue = int.Parse(??);
        string[] cellValue;
        dataGridView1.Rows.Clear();
        //dataGridView1.Columns.Clear();
        if (System.IO.File.Exists(csvPath))
        {
            System.IO.StreamReader fileReader = new StreamReader(csvPath);
            rowValue = fileReader.ReadLine();
            cellValue = rowValue.Split(',');



            for (int i = 0; i <= cellValue.Count() - 1; i++)
            {
                DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
                column.Name = cellValue[i];    //column name , value
                column.HeaderText = cellValue[i];
                dataGridView1.Columns.Add(column);
                // dataGridView1.Columns[].CellType = typeof(Int64);
                //Conver.ToString
                dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; // Korean? 칼럼 헤더 가운데 정렬
             //   dataGridView1.RowHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
               // dataGridView1.Columns[0].DataPropertyName = "field name";
            }
            while (fileReader.Peek() != -1)
            {
                rowValue = fileReader.ReadLine();
                cellValue = rowValue.Split(',');
                dataGridView1.Rows.Add(cellValue);
            }
            fileReader.Dispose();
            fileReader.Close();`

【问题讨论】:

  • 不要直接将行添加到DataGridView,而是将它们添加到DataTable,然后将该表设置为DataGridViewDataSource,然后使用table.DefaultView.RowFilter过滤@987654328 @.

标签: c# .net winforms csv datagridview


【解决方案1】:

不要将行直接添加到DataGridView,而是将它们添加到DataTable,然后将该表设置为DataGridViewDataSource,然后使用该table.DefaultView.RowFilter 过滤DataGridView

您可以使用以下示例简单地更改您的代码。

创建数据表:

var table = new DataTable();

向数据表添加列:

table.Columns.Add("column name");

向数据表添加行:

要使用范围添加一行,例如 string[]

table.Rows.Add(range);

将表设置为DataGridviewDataSource

dataGridView1.DataSource = table;

使用 DataTable 过滤:

使用数据表进行过滤,例如仅显示FirstNameJohn 的行:

((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = "FirstName = 'John'"; 

了解详情:

【讨论】:

  • emm....这是否意味着...首先将 csv 文件添加到 Datatable...然后添加 DataGridview?
  • 先将列和行添加到DataTable,然后将数据表设置为网格的DataSource。这是使用数据绑定在网格中显示数据。
  • 我想使用 button_click...和 ​​text_box....例如..我想查看某些 Rows_group...所以,在 text_box 中写下行的名称...然后按钮单击如何到..?
  • 我想你有一个FirstName 列,你可以有e firstNameTextBoxbutton1_Click,来显示FirstName 等于你输入的行,用这个作为过滤表达式:string.Format("FirstName = '{0}'", firstNameTextBox.Text)
  • 要显示他们的FirstName 包含(喜欢)您输入的行,将其用作过滤器表达式:string.Format("FirstName LIKE '%{0}&amp;'", firstNameTextBox.Text)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 2019-10-01
  • 2019-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
相关资源
最近更新 更多