从文本文件填充数据集

Posted

技术标签:

【中文标题】从文本文件填充数据集【英文标题】:Populate DataSet from text file 【发布时间】:2010-09-29 10:51:10 【问题描述】:

我有一个包含来自另一个程序的日志信息的文本文件,它的格式非常糟糕,但我无法编辑原始程序,我想用 dataGridView 创建一个新程序,它从 .txt 文件中读取数据并将其添加到 datagridview。这并不难,我用 dataGridView1.Rows.Add 和字符串数组(以及之前准备好的列)做到了。但我不使用数据源和数据集。我想在datagridview的标题中添加过滤(组合框,如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 做 datagridview 但它不会工作:

dataGridView1.DataSource = ds;

感谢您的帮助

【问题讨论】:

你是在调用dataGridView1.DataBind()方法吗? DataGridView 没有 DataBind() 方法,或者我错了,但我不能使用这个方法。 抱歉,在 windows 和 web 之间搞混了。我对 DataGridView 没有任何经验。 【参考方案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 基本上展示了如何做到这一点。)

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

【讨论】:

我第一次这样做但是对于库 DataGridViewAutoFilter 我需要使用 DataTable 所以这是我的问题。如何从文本文件中绑定 DataTable(或 DataSet),然后将其绑定到 datagridview。您链接的文章对我有帮助。唯一的问题是生成列,因此其他人不要忘记添加“dataGridView1.AutoGenerateColumns = true;”。感谢您的帮助【参考方案2】:

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

【讨论】:

谢谢,我读了它并创建了我的课程,也许它会有所帮助,但首先我尝试了 Pat 的文章,它有帮助,所以我不需要别的,只需要谢谢 :)

以上是关于从文本文件填充数据集的主要内容,如果未能解决你的问题,请参考以下文章

如何用两列 C++ 从文本文件中填充向量

从 Qt 中的文本文件填充表格小部件

从 django 应用程序下载一个文本/csv 文件,该文件从数据库查询中填充 HTML 表

使用对话框将结果集导出到 java 中的文本文件

R语言使用read_table函数读取文本文件或者文本数据生成dataframe数据集从分隔文本文件中导入数据(Importing data from a delimited text file)

从 XML 文件填充文本框