C #: разделить строку и поместить ее в первый столбец DataGridView - PullRequest
1 голос
/ 21 июля 2011

Мне нужно взять первую строку файла и поместить слова строки в первый столбец DataGridView.

Я написал этот код, где CSV-файл преобразуется в список массивов:

ArrayList fileList = new ArrayList();

private void button2_Click(object sender, EventArgs e)
{                           
    string line;

    // Read the file and display it line by line.

    //Read the path from the TextBox
    System.IO.StreamReader file = new System.IO.StreamReader(textBox1.Text);

    stringforData=file.ReadLine(); //this line is because I didn't need //the first 
    //line of the file  
    while ((line = file.ReadLine()) != null)
    {
        // puts elements into array 
        fileList.Add(line.Split(';'));
    }

    file.Close();
}

Мой файл выглядит так:

Name;Surname;Telephone;Address;
george;parado;3434;lili_2;
jennifer;macin;3333;powel_34;
nick;lukas;3322;manchester_44;

Я хочу, чтобы DataGridView был таким:

**Subject      Type**
Name
Surname
Telephone
Address

Так что мне нужно взять первую строкуфайла и поместите его в первый столбец DataGridView.

Насколько я сейчас сделал этот метод.

ArrayList forData = new ArrayList();
string stringforData;

public void ToDataGrid()
{
    DataGridViewColumn newCol = new DataGridViewTextBoxColumn();

    forData.Add(stringforData.Split(';'));

}

Метод ToDataGrid должен поместить элементы ArrayList с именем forData в первый столбец DataGridView.

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

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Код ниже берет строку с разделителями, разделяет ее и затем добавляет значения в столбец таблицы данных.Хотя я все еще пытаюсь понять, почему вы хотите это сделать.

string csv = "Name,Surname,Telephone,Address";
string[] split = csv.Split(',');

DataGridViewTextBoxColumn subject = new DataGridViewTextBoxColumn();
subject.HeaderText = "Subject Type";
subject.Name = "Subject";

dataGridView1.Columns.Add(subject);

foreach (string item in split)
{
    dataGridView1.Rows.Add(item);
}
0 голосов
/ 21 июля 2011

Я даю этот ответ, исходя из предположения, что вы хотите поместить каждую строку файла с разделителями в строку просмотра данных.Пожалуйста, добавьте комментарий, если это на самом деле не то, что вы хотите.

string csv = "John,Doe,21";
string[] split = csv.Split(',');

DataGridViewTextBoxColumn firstName = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn lastName = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn age = new DataGridViewTextBoxColumn();

dataGridView1.Columns.Add(firstName);
dataGridView1.Columns.Add(lastName);
dataGridView1.Columns.Add(age);

dataGridView1.Rows.Add(split);

Код выше, очевидно, работает только в одной строке, но вы можете вызвать это в цикле достаточно легко.Если вы сделаете это, будьте осторожны, чтобы не добавлять столбцы внутри этого цикла!

Это работает как быстрый способ отображения файла с разделителями в сетке, но если бы я писал этот код, я бы вместо этого проанализировал файлв объектную модель, а затем привязать список этих объектов к источнику данных datagridview - это даст вам двухстороннее связывание данных и намного более управляемый способ работы с этими данными.

Даже что-то элементарное, как я покажу ниже,будь чище:

var users = (from line in File.ReadAllLines(@"C:\mycsv.txt")
let columns = line.Split(',')
select new User()
{
    FirstName = columns[0],
    Surname = columns[1],
    Age = columns[2]
}).ToList();

dataGridView1.DataSource = users;
...