从文本文件填充DataSet

时间:2010-09-29 10:51:10

标签: c# datagridview dataset

我有来自另一个程序的日志信息的文本文件,它的格式非常糟糕,但我无法编辑原始程序,我想用dataGridView创建一个新程序,它从.txt文件读取数据并将其添加到datagridview。它不是那么难,我使用dataGridView1.Rows.Add和字符串数组(以及之前准备好的列)。但我不使用数据源和数据集。我想添加过滤(dataobridview的标题中的组合框,如here,但我不能在没有数据集的情况下添加它。那么如何创建只包含数据的字符串数组的数据集? 我正在尝试这段代码:

DataSet ds = new DataSet();
ds.Tables.Add(TableName);
ds.Tables[TableName].Columns.Add("Datum");
ds.Tables[TableName].Columns.Add("Cas");
ds.Tables[TableName].Columns.Add("Moduly");

然后我读取文件中的每一行并使用字符串创建数组并尝试将该数组添加到行:

ds.Tables[TableName].Rows.Add(PoleRetezcu);

然后只需添加DataSet do datagridview但它不会工作:

dataGridView1.DataSource = ds;

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您可以完全跳过DataSet创建并使用DataGridView自己的方法添加数据,如this MSDN example中所做的那样。特别是,请查看步骤4,其中包含以下代码:

private void PopulateDataGridView()
{

    string[] row0 = { "11/22/1968", "29", "Revolution 9", 
        "Beatles", "The Beatles [White Album]" };
    string[] row1 = { "1960", "6", "Fools Rush In", 
        "Frank Sinatra", "Nice 'N' Easy" };
    string[] row2 = { "11/11/1971", "1", "One of These Days", 
        "Pink Floyd", "Meddle" };
    string[] row3 = { "1988", "7", "Where Is My Mind?", 
        "Pixies", "Surfer Rosa" };
    string[] row4 = { "5/1981", "9", "Can't Find My Mind", 
        "Cramps", "Psychedelic Jungle" };
    string[] row5 = { "6/10/2003", "13", 
        "Scatterbrain. (As Dead As Leaves.)", 
        "Radiohead", "Hail to the Thief" };
    string[] row6 = { "6/30/1992", "3", "Dress", "P J Harvey", "Dry" };

    songsDataGridView.Rows.Add(row0);
    songsDataGridView.Rows.Add(row1);
    songsDataGridView.Rows.Add(row2);
    songsDataGridView.Rows.Add(row3);
    songsDataGridView.Rows.Add(row4);
    songsDataGridView.Rows.Add(row5);
    songsDataGridView.Rows.Add(row6);

    songsDataGridView.Columns[0].DisplayIndex = 3;
    songsDataGridView.Columns[1].DisplayIndex = 4;
    songsDataGridView.Columns[2].DisplayIndex = 0;
    songsDataGridView.Columns[3].DisplayIndex = 1;
    songsDataGridView.Columns[4].DisplayIndex = 2;
}

(顺便说一下,您可以直接将DGV绑定到DataTable - 您不需要DataSet来跟踪它。This article基本上会显示如何执行此操作。)

希望有所帮助。发表您的最终答案; - )

答案 1 :(得分:0)

我相信this article会以非常详细的解释回答您的问题。从本质上讲,您遇到的问题是,当您将 PoleRetezcu 传递到表中时,该表不知道哪个数据属于哪个列,因此丢弃的信息。通过将每个列的 DataPropertyName 与自定义类中的属性进行匹配,您将对它们进行松散绑定,从而确保表格知道如何存储所传入的信息。