【问题标题】:Populating part of a DataGridView from CSV从 CSV 填充 DataGridView 的一部分
【发布时间】:2013-03-05 07:58:10
【问题描述】:

我想用 CSV 文件中的数据填充前几列

我正在使用的代码:

...
   DataTable dataTable = (DataTable)readCsvTable(openFileDialog1.FileName);
   if (dataTable != null) dataGridViewQuestions.DataSource = dataTable; 
...


 private DataTable readCsvTable(string filename) 
    {
        DataTable dtDataSource = new DataTable();

        try
        {
            string[] fileContent = File.ReadAllLines(filename);

            if (fileContent.Count() > 0)
            {
                //Create data table columns
                string[] columns = fileContent[0].Split(',');
                for (int i = 0; i < columns.Count(); i++)
                {
                    dtDataSource.Columns.Add(columns[i]);
                }

                //Add row data
                for (int i = 1; i < fileContent.Count(); i++)
                {
                    string[] rowData = fileContent[i].Split(',');
                    dtDataSource.Rows.Add(rowData);
                }
            }
        }
        catch (Exception ex) {
            ...
            //error msgbox
            ...
            return null;
        }
        return dtDataSource;
    }

问题:

当 AutoGenerateColumns = true 时 - 代码会导致将附加列(在同一应用程序导出文件的情况下与 DataGridView 中的前几列名称相同)添加到 gridView 并填充适当的数据。

当 AutoGenerateColumns = false 时 - 上面的代码将正确的行数添加到表中,并且没有添加新列但行是空的。

已经试过了:

通过列的 HeaderText 和列的控件名称调用 CSV 文件中的列,生成与 DataGridView 列数相同的 CSV 文件,生成列数较少的文件,没有区别。

【问题讨论】:

    标签: c# csv datagridview


    【解决方案1】:

    我刚刚尝试过模拟它,它按预期工作。切换文件时是否抛出异常?

    您可以在尝试解析文件之前尝试将数据源设置为 null,以便查看它是否达到了那么远?

    dataGridViewQuestions.DataSource = null;
    DataTable dataTable = readCsvTable(openFileDialog1.FileName);
    if (dataTable != null) 
         dataGridViewQuestions.DataSource = dataTable; 
    

    【讨论】:

      【解决方案2】:

      如果从“AutoGenerateColumns = true”填充的数据使用它。 如果前面的列是您的问题,那么您可以为该 datagridview 创建新实例;

      ...
      if (dataTable != null)
      {
          dataGridViewQuestions = new DataGridView();
          dataGridViewQuestions.DataSource = dataTable;
      }
      ...
      

      【讨论】:

        猜你喜欢
        • 2014-09-17
        • 2013-08-11
        • 1970-01-01
        • 1970-01-01
        • 2012-03-14
        • 1970-01-01
        • 2017-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多