none
Как подключить к DataGridView файл txt, чтобы его поля таблицы соответствовали сетке грида RRS feed

Ответы

  • Добрый день.

    Если файл регулярной структуры. Например:

    Иванов;Иван;Иванович;01.06.1985

    Петро;Петр;Петрович;12.04.1987

    То я бы сделал класс, в котором хранил бы эти данные. Что то вида:

    public class Person
    {
        public string LastName { get; set; }
    
        public string FirstName { get; set; }
    
        public string MiddleName { get; set; }
    
        public DateTime BirthDate { get; set; }
    }

    При помощи класса StreamReader считал бы файл и разобрав считанные строки записал бы данные в массив вида:

    List<Person> persons = new List<Person>();

    Все. После оконачания чтения файла, остается только указать источник данных для нашего DataGridView:

    dataGridView1.DataSource = persons;

    Все работает.

    • Помечено в качестве ответа georgushek 22 августа 2013 г. 14:59
    21 августа 2013 г. 5:22
    Отвечающий

Все ответы

  • подскажите, пожалуйста!

    21 августа 2013 г. 4:32
  • Добрый день.

    Если файл регулярной структуры. Например:

    Иванов;Иван;Иванович;01.06.1985

    Петро;Петр;Петрович;12.04.1987

    То я бы сделал класс, в котором хранил бы эти данные. Что то вида:

    public class Person
    {
        public string LastName { get; set; }
    
        public string FirstName { get; set; }
    
        public string MiddleName { get; set; }
    
        public DateTime BirthDate { get; set; }
    }

    При помощи класса StreamReader считал бы файл и разобрав считанные строки записал бы данные в массив вида:

    List<Person> persons = new List<Person>();

    Все. После оконачания чтения файла, остается только указать источник данных для нашего DataGridView:

    dataGridView1.DataSource = persons;

    Все работает.

    • Помечено в качестве ответа georgushek 22 августа 2013 г. 14:59
    21 августа 2013 г. 5:22
    Отвечающий
  • поля появились, но они не заполненные!

    Как их заполнить? Из текста.

    Подскажите, пожалуйста!

    21 августа 2013 г. 15:35
  • Вы прочитали из моего ответа про StreamReader? Если да, то читаете построчно файл. Разбираете каждую строку на поля. Создаете объект и записываете его в список. Все это перед присваиванием DataContext.

    21 августа 2013 г. 15:45
    Отвечающий
  • public class Table
            {
                public string nomer_param { get; set; }

                public string name { get; set; }

                public string oboznach { get; set; }

                public string fiz_znach { get; set; }

                public string kod { get; set; }

                public string smeshenie { get; set; }
            }


            private void button3_Click(object sender, EventArgs e)
            {

                StreamReader reader = new StreamReader(@"G:\....txt");
                List<Table> Tables = new List<Table>();
                dataGridView1.DataSource = Tables;

            }

    Я написал вот-так!

                     
    21 августа 2013 г. 16:01
  • Осталось между вот этими двумя строками добавить разбор файла.

    List<Table> Tables = new List<Table>();
    dataGridView1.DataSource = Tables;
    

     По ссылке есть пример чтения файла. Если возникнут вопросы по разбору строк, пишите...

    21 августа 2013 г. 16:26
    Отвечающий
  • Как-то так?

       private void button3_Click(object sender, EventArgs e)
            {

                StreamReader Table = new StreamReader(@"G:\....txt");
                List<Table> Tables = new List<Table>();
                Tables.WriteLine("nomer_param ");
                Tables.WriteLine("name");
                Tables.WriteLine("oboznach");
                Tables.WriteLine("fiz_znach");
                Tables.WriteLine("kod");
                Tables.WriteLine("smeshenie");
                dataGridView1.DataSource = Tables;

            }

    21 августа 2013 г. 16:53
  • Нет. Вы пример по ссылке посмотрели?

    21 августа 2013 г. 16:55
    Отвечающий
  • Там все для Консольного вывода!

    Я это оттуда переписал!

    Я так понял, что нужно сделать запись в каждое поле

    21 августа 2013 г. 17:10
  • Правильно, но там есть цикл, который выводит содержимое файла на консоль. Вам, вместо вывода, необходимо на основе анализа строки создавать новый объект и заполнять его поля. После чего добавлять объект в список.

    21 августа 2013 г. 17:13
    Отвечающий
  • Вы имеете в виду это:

      using (FileStream fs = new FileStream(path, FileMode.Open)) 
                {
                    using (StreamReader sr = new StreamReader(fs)) 
                    {
    
                        while (sr.Peek() >= 0) 
                        {
                            Console.WriteLine(sr.ReadLine());
                        }

    21 августа 2013 г. 17:28
  • Да:

    Вам, вместо вывода, необходимо на основе анализа строки создавать новый объект и заполнять его поля. После чего добавлять объект в список.

    21 августа 2013 г. 17:30
    Отвечающий
  •  foreach (string Table in Tables)
                    {

    list.Add(nomer_param);

    ...


    }

    dataGridView1.DataSource = Tables;

    Вот-так?

    21 августа 2013 г. 17:57
  • У меня возникает ошибка!
    21 августа 2013 г. 18:15
  • Я уже перепробовал все варианты, можете помочь?

    Помогите, пожалуйста!

    22 августа 2013 г. 8:43
  • Коллега, никто за вас вашу работу делать не будет. Вам подсказали направление в котором посмотреть. Разберитесь, почитайте базовые книги по C#. Такое ощущение, что с ним у вас проблемы. Почитайте про работу со строками, про методы SubString, IndexOf. Попробуйте написать код. А потом задайте вопрос вида: "Я из файл читаю строку вида <>, пытаюсь разобрать на такие-то элементы, вот таким кодом, у меня смещается вот здесь, и поле распознается не правильно". В этом случае, вам с удовольствием помогут.
    22 августа 2013 г. 9:38
    Отвечающий