Заполнение DataGridView из DataTable - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте уважаемые эксперты! Есть следующий код:
static class FillDataGridView
{
    private static DataTable AddInformation(string str)
    {
        DataTable _table = new DataTable("Table");
        string[] _colNames = new[] { "Column 1", "Column 2", "Column 3" };
 
        foreach (string colname in _colNames)
        {
            DataColumn column = new DataColumn(colname);
            column.DataType = Type.GetType("System.String");
            _table.Columns.Add(column);
        }
           
        DataRow dataRow;
        dataRow = _table.NewRow();
        dataRow[_colNames[0]] = "str1";
        dataRow[_colNames[1]] = "str2";
        dataRow[_colNames[2]] = str;
        _table.Rows.Add(dataRow);
        return _table;
    }
 
    public static void FillDataGrid(DataGridView dataGrid, string str)
    {
        DataTable table = AddInformation(str);
        dataGrid.DataSource = table;
    }
        
}
И вызываю я его так:
private void Form1_Load(object sender, EventArgs e)
{
    List<string> testList = new List<string>();
    testList.Add("str1");
    testList.Add("str2");
    testList.Add("str3");
    foreach (string str in testList)
    {
        FillDataGridView.FillDataGrid(dataGridView1, str);
    }
}
Но при вызове, данные в DVG переписываются. Как сделать чтобы строка не переписывалась, а добавлялись новые строки в DVG при каждой итерации цикла?

Решение задачи: «Заполнение DataGridView из DataTable»

textual
Листинг программы
internal static class FillDataGridView
    {
        private static DataTable _table;
 
        private static DataTable AddInformation(string str)
        {
            var _colNames = new[] {"Column 1", "Column 2", "Column 3"};
            if (_table == null)
                CreateTable(_colNames);
 
            DataRow dataRow;
            dataRow = _table.NewRow();
            dataRow[_colNames[0]] = "str1";
            dataRow[_colNames[1]] = "str2";
            dataRow[_colNames[2]] = str;
            _table.Rows.Add(dataRow);
            return _table;
        }
 
        private static void CreateTable(IEnumerable<string> _colNames)
        {
            _table = new DataTable("Table");
            foreach (string colname in _colNames)
            {
                var column = new DataColumn(colname);
                column.DataType = Type.GetType("System.String");
                _table.Columns.Add(column);
            }
        }
 
        public static void FillDataGrid(DataGridView dataGrid, string str)
        {
            DataTable table = AddInformation(str);
            dataGrid.DataSource = table;
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5