我怎样才能读取文本文件并将其写入数据网格?

时间:2017-05-18 11:03:22

标签: c# wpf datagrid text-files

如何从文本文件写入数据网格

使用以下代码从数据网格写入文本文件

"(\w+)(\sU)"

我的文字文件如下所示

5/30/2017 12:00:00 AM:10:00:Tom:Boy | 5/30/2017 12:00:00 AM:10:00:KElly:Girl |

我的从文本文件到datagrid读取它的方法看起来像这个

string file_name = "text.txt";
        StringBuilder strBuilder = new StringBuilder();

        for (int i = 0; i < datagrid.Items.Count; i++)
        {

            //this is the class person
            Person prsn = (Person) datagrid.Items[i];
            strBuilder.Append(prsn.ToString());
        }
        File.WriteAllText(file_name, strBuilder.ToString());

但是当我这样做并加载表单时,我的datagrid显示以下值

计数 148

我如何以探针的方式阅读它并将其发布在数据网格而不是数据网格中

2 个答案:

答案 0 :(得分:0)

将复杂对象保存到Text不是一个好选择。 读取Text并将其解析回对象是很多工作(对于你和CPU)。您必须将Line拆分为对象的属性,创建人员的新实例并为每个属性设置值。

不要让你觉得那么难。

您应该使用Serialization instad。

一个简单的例子就是这样:

  1. 创建对象列表(List<Persons>
  2. 在DataGrid中显示它们
  3. 添加/删除或执行您想要的任何内容
  4. 获取DataGrids的内容,将其序列化并使用JSON.NET
  5. 将其存储为JSON
  6. 在Application_Start上重新加载并反序列化您的文件到List<Person>
  7. 将列表重新绑定到GridView的ItemsSource
  8. 或者您可以使用任何XmlSerializer

    执行相同的操作

答案 1 :(得分:-2)

这是因为DataGrid会查找包含对象的属性。你必须做以下的事情: 的更新

    public void todatagrid()
    {
        List<Person> persons = new List<Person>();

        string textfile = "test.txt";

        var textvalues = File.ReadAllLines(textfile);

        foreach (var item in textvalues)
        {
            persons.Add(new Person() { Value = item });
        }
        datagrid.ItemsSource = persons;    
    }

    class Person
    {
        public string Value { get; set; }   //Whatever this field is
    }