C# 如何从列表中放置数据<;字符串[]>;到dataGridView

C# 如何从列表中放置数据<;字符串[]>;到dataGridView,c#,.net,winforms,list,datagridview,C#,.net,Winforms,List,Datagridview,尝试将列表中的一些数据放入dataGridView,但有一些问题 目前有方法,返回我所需的列表-请参阅下面的图片 代码 但结果出现了错误——“需要在dataGridVIew中存在更多的行”,但根据我看到的(上图),行的q-ty(4)等于列表(4)中数组元素的q-ty 尝试通过添加额外的温度变量来检查结果-但没关系-请参见下面的图片 我错在哪里?也许我使用dataGridView的方式不正确 编辑 文件示例(简单csv) 11111,作者、姓名、类别 11341,Author1,Name1,Ca

尝试将列表中的一些数据放入dataGridView,但有一些问题

目前有方法,返回我所需的列表-请参阅下面的图片

代码

但结果出现了错误——“需要在dataGridVIew中存在更多的行”,但根据我看到的(上图),行的q-ty(4)等于列表(4)中数组元素的q-ty

尝试通过添加额外的温度变量来检查结果-但没关系-请参见下面的图片

我错在哪里?也许我使用dataGridView的方式不正确

编辑

文件示例(简单csv)

11111,作者、姓名、类别


11341,Author1,Name1,Categories1

我觉得你的代码太复杂了。简单地说,如果希望从文件中查看表中的所有数据,可以这样做

if (!System.IO.File.Exists("file.txt"))
            return;
        dgvDataGridView.ColumnCount = 4;
        dgvDataGridView.Columns[0].HeaderCell.Value = "ID";
        dgvDataGridView.Columns[1].HeaderCell.Value = "Author";
        dgvDataGridView.Columns[2].HeaderCell.Value = "Caption";
        dgvDataGridView.Columns[3].HeaderCell.Value = "Categories";
        using (System.IO.StreamReader sr = new System.IO.StreamReader("file.txt"))
            while (sr.Peek() > -1)
                dgvDataGridView.Rows.Add(sr.ReadLine().Split(','));

我觉得你的代码太复杂了。简单地说,如果希望从文件中查看表中的所有数据,可以这样做

if (!System.IO.File.Exists("file.txt"))
            return;
        dgvDataGridView.ColumnCount = 4;
        dgvDataGridView.Columns[0].HeaderCell.Value = "ID";
        dgvDataGridView.Columns[1].HeaderCell.Value = "Author";
        dgvDataGridView.Columns[2].HeaderCell.Value = "Caption";
        dgvDataGridView.Columns[3].HeaderCell.Value = "Categories";
        using (System.IO.StreamReader sr = new System.IO.StreamReader("file.txt"))
            while (sr.Peek() > -1)
                dgvDataGridView.Rows.Add(sr.ReadLine().Split(','));

我觉得你的代码太复杂了。简单地说,如果希望从文件中查看表中的所有数据,可以这样做

if (!System.IO.File.Exists("file.txt"))
            return;
        dgvDataGridView.ColumnCount = 4;
        dgvDataGridView.Columns[0].HeaderCell.Value = "ID";
        dgvDataGridView.Columns[1].HeaderCell.Value = "Author";
        dgvDataGridView.Columns[2].HeaderCell.Value = "Caption";
        dgvDataGridView.Columns[3].HeaderCell.Value = "Categories";
        using (System.IO.StreamReader sr = new System.IO.StreamReader("file.txt"))
            while (sr.Peek() > -1)
                dgvDataGridView.Rows.Add(sr.ReadLine().Split(','));

我觉得你的代码太复杂了。简单地说,如果希望从文件中查看表中的所有数据,可以这样做

if (!System.IO.File.Exists("file.txt"))
            return;
        dgvDataGridView.ColumnCount = 4;
        dgvDataGridView.Columns[0].HeaderCell.Value = "ID";
        dgvDataGridView.Columns[1].HeaderCell.Value = "Author";
        dgvDataGridView.Columns[2].HeaderCell.Value = "Caption";
        dgvDataGridView.Columns[3].HeaderCell.Value = "Categories";
        using (System.IO.StreamReader sr = new System.IO.StreamReader("file.txt"))
            while (sr.Peek() > -1)
                dgvDataGridView.Rows.Add(sr.ReadLine().Split(','));

在添加行之前,您需要先将列添加到数据表中:

private void radioButtonViewAll_CheckedChanged(object sender, EventArgs e)
{
    TxtLibrary myList = new TxtLibrary(filePathBooks);
    myList.chooise = "all";
    DataTable table = new DataTable();
    //add columns first
    table.Columns.Add("ID");
    table.Columns.Add("Author");
    table.Columns.Add("Caption");
    table.Columns.Add("Categories");
    //then add rows
    foreach (var array in myList.ReadFromFileBooks()) {
        table.Rows.Add(array);
    }
    dataGridViewLibrary.DataSource = table;
}

在添加行之前,您需要先将列添加到数据表中:

private void radioButtonViewAll_CheckedChanged(object sender, EventArgs e)
{
    TxtLibrary myList = new TxtLibrary(filePathBooks);
    myList.chooise = "all";
    DataTable table = new DataTable();
    //add columns first
    table.Columns.Add("ID");
    table.Columns.Add("Author");
    table.Columns.Add("Caption");
    table.Columns.Add("Categories");
    //then add rows
    foreach (var array in myList.ReadFromFileBooks()) {
        table.Rows.Add(array);
    }
    dataGridViewLibrary.DataSource = table;
}

在添加行之前,您需要先将列添加到数据表中:

private void radioButtonViewAll_CheckedChanged(object sender, EventArgs e)
{
    TxtLibrary myList = new TxtLibrary(filePathBooks);
    myList.chooise = "all";
    DataTable table = new DataTable();
    //add columns first
    table.Columns.Add("ID");
    table.Columns.Add("Author");
    table.Columns.Add("Caption");
    table.Columns.Add("Categories");
    //then add rows
    foreach (var array in myList.ReadFromFileBooks()) {
        table.Rows.Add(array);
    }
    dataGridViewLibrary.DataSource = table;
}

在添加行之前,您需要先将列添加到数据表中:

private void radioButtonViewAll_CheckedChanged(object sender, EventArgs e)
{
    TxtLibrary myList = new TxtLibrary(filePathBooks);
    myList.chooise = "all";
    DataTable table = new DataTable();
    //add columns first
    table.Columns.Add("ID");
    table.Columns.Add("Author");
    table.Columns.Add("Caption");
    table.Columns.Add("Categories");
    //then add rows
    foreach (var array in myList.ReadFromFileBooks()) {
        table.Rows.Add(array);
    }
    dataGridViewLibrary.DataSource = table;
}

它的工作非常完美,所以我无法理解dataGridView的结构不能与部分配置的数据源一起使用?或者存在这样做的方法?意思是如果我在FormConstructor中创建列,我可以在代码中只创建行吗?或者无论如何,我必须在代码中创建列吗?@Kirill问题是,在向数据表添加行之前,它必须至少有一列,换句话说,在添加行之前,它应该先有一些表结构。您不需要手动将列添加到
DataGridView
中,当您分配
dataGridViewLibrary.DataSource=table
时,您的
Gridview
将自动生成相应的列(AutoGenerateColumns=true)。@Kirill如果答案解决了您的问题,您应该点击V形勾号来接受答案,这将是您最好的感谢…它的工作非常完美,因此我无法理解dataGridView的结构不能与部分配置的数据源一起使用?或者存在这样做的方法?意思是如果我在FormConstructor中创建列,我可以在代码中只创建行吗?或者无论如何,我必须在代码中创建列吗?@Kirill问题是,在向数据表添加行之前,它必须至少有一列,换句话说,在添加行之前,它应该先有一些表结构。您不需要手动将列添加到
DataGridView
中,当您分配
dataGridViewLibrary.DataSource=table
时,您的
Gridview
将自动生成相应的列(AutoGenerateColumns=true)。@Kirill如果答案解决了您的问题,您应该点击V形勾号来接受答案,这将是您最好的感谢…它的工作非常完美,因此我无法理解dataGridView的结构不能与部分配置的数据源一起使用?或者存在这样做的方法?意思是如果我在FormConstructor中创建列,我可以在代码中只创建行吗?或者无论如何,我必须在代码中创建列吗?@Kirill问题是,在向数据表添加行之前,它必须至少有一列,换句话说,在添加行之前,它应该先有一些表结构。您不需要手动将列添加到
DataGridView
中,当您分配
dataGridViewLibrary.DataSource=table
时,您的
Gridview
将自动生成相应的列(AutoGenerateColumns=true)。@Kirill如果答案解决了您的问题,您应该点击V形勾号来接受答案,这将是您最好的感谢…它的工作非常完美,因此我无法理解dataGridView的结构不能与部分配置的数据源一起使用?或者存在这样做的方法?意思是如果我在FormConstructor中创建列,我可以在代码中只创建行吗?或者无论如何,我必须在代码中创建列吗?@Kirill问题是,在向数据表添加行之前,它必须至少有一列,换句话说,在添加行之前,它应该先有一些表结构。您不需要手动将列添加到
DataGridView
中,当您分配
dataGridViewLibrary.DataSource=table
时,您的
Gridview
将自动生成相应的列(AutoGenerateColumns=true)。@Kirill如果答案解决了您的问题,你应该点击V形的勾号来接受答案,这将是你最好的感谢。。。