Заполните DataSet из текстового файла - PullRequest
0 голосов
/ 29 сентября 2010

У меня есть текстовый файл с информацией журнала из другой программы, и он имеет очень плохое форматирование, но я не могу отредактировать исходную программу и хочу создать новую программу с dataGridView, которая считывает данные из файла .txt и добавляет их в datagridview.Это не так сложно, и я сделал это с dataGridView1.Rows.Add и массивом строк (и подготовленных столбцов ранее).Но я не использую источник данных и набор данных.Я хочу добавить фильтрацию (выпадающий список в заголовке datagridview, например здесь , но я не могу добавить его без набора данных. Итак, как я могу создать набор данных только с массивом строк, который содержит только данные? Я пытаюсь это сделатьcode:

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 ]

1 голос
/ 30 сентября 2010

Вероятно, вы можете вообще пропустить создание DataSet и использовать собственные методы DataGridView для добавления данных, как это сделано в в этом примере MSDN .В частности, посмотрите на шаг 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 для отслеживанияэто. Эта статья в основном показывает, как это сделать.)

Надеюсь, это поможет.Разместите свой окончательный ответ; -)

0 голосов
/ 30 сентября 2010

Я верю эта статья отвечает на ваш вопрос с очень подробным объяснением. По сути, проблема, с которой вы сталкиваетесь, заключается в том, что когда вы передаете PoleRetezcu в таблицу, таблица не знает, какие данные принадлежат к какому столбцу, поэтому информация отбрасывается. Сопоставляя каждый из столбцов DataPropertyName со свойствами в вашем пользовательском классе, вы свободно связываете их, гарантируя, что таблица знает, как хранить поступающую информацию.

...