为什么Datagridview的第一行显示在标题列中?

问题描述 投票:1回答:1

[我在这里尝试将“ +”之前的.txt文件文本数据导入到Datagridview中,例如,从我的文本文件中,我只想打印35和219,但是问题是我的.txt文件的第一行显示在标题栏中。

文本文件

35 ++++++ 201103abf41402e31ce7568f5327681f66219 +++++ 2011028223694803a611a982a4cb6fa9f8

代码

private void browsebtn_Click(object sender, EventArgs e)
{
    OpenFileDialog ofd = new OpenFileDialog();
    if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        pathtxtbox.Text = ofd.FileName;
        readtextfile();
    }
}

private void readtextfile()
{
    System.IO.StreamReader file = new System.IO.StreamReader(@"path of textfile");
    string[] colnames = file.ReadLine().Split('\n');
    DataTable dt = new DataTable();
    dt.Columns.Add("NCP Data");
    foreach (string col in colnames)
    {
        dt.Columns.Add(col);
    }
    string newline;
    while ((newline = file.ReadLine()) != null)
    {
        DataRow dr = dt.NewRow();
        string[] values = newline.Split(' ');
        for (int i = 0; i < values.Length; i++)
        {
            //dr[i] = values[i];
            dr[i] = values[i].Substring(0, values[i].IndexOf('+'));
        }
        dt.Rows.Add(dr);
    }
    file.Close();
    dataGridView1.DataSource = dt;
}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{

}

[请有人帮我解决问题。谢谢!

c#
1个回答
0
投票

您的代码期望第一行包含列标题!

string[] colnames = file.ReadLine().Split('\n');

这会将文件的第一行与第一行的内容拆分为一列。

首先,我将其更改为与用于文件内容的鉴别符相匹配:

string[] colnames = file.ReadLine().Split('+');

但是这仍将文件的第一行用作列标题。如果您想对代码进行硬编码而对代码的更改最少,则可以执行以下操作:

string[] colnames = "Id+col1+col2+col3+col4+col5+UUID".Split('+');

或者,如果您根本不需要动态列名,请尝试使用此较短的版本:

private void readtextfile()
{
    System.IO.StreamReader file = new System.IO.StreamReader(@"path of textfile");
    DataTable dt = new DataTable();
    dt.Columns.Add("NCP Data");

    string newline;
    while ((newline = file.ReadLine()) != null)
    {
        DataRow dr = dt.NewRow();
        string[] values = newline.Split('+');
        for (int i = 0; i < dt.Columns.Length; i++) // leaving dynamic column code here for use later...
        {
            dr[i] = values[i];
        }
        dt.Rows.Add(dr);
    }
    file.Close();
    dataGridView1.DataSource = dt;
}

我在表列上保留了for循环,以帮助说明原始源脚本和您今天试图通过固定的单列实现的区别。

© www.soinside.com 2019 - 2024. All rights reserved.