Добавить массив параметров в строку Datagridview

У меня есть разные datagridview, которые имеют 3 одинаковых первых столбца. Другие столбцы отличаются от одного представления данных к другому. Я написал метод расширения, который получает в качестве параметров строки массив параметров, которые представляют значения других столбцов. Мой код:

    public static void AddNewRow(this DataGridView datagridview, params string[] parameters)
    {
        datagridview.Rows.Add(" ", " ", "A", parameters);
    }

Столбцы каждого вида данных уже определены. Код, который я написал, не добавляет каждый строковый параметр в каждый столбец соответственно, есть ли способ сделать это? В настоящее время 4-й столбец получает в качестве значения весь строковый массив params.

2 ответа

Решение

Есть ли способ сделать это?

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

public static void AddNewRow(this DataGridView datagridview, params string[] parameters)
{
    datagridview.Rows.Add(new[] { " ", " ", "A" }.Concat(parameters).ToArray());
}

Призыв к DataGridView.Rows.Add ожидает массив объектов, поэтому в вашем случае он считает array[0] = string, array[1] = string, array[2] = string, array[3] = string[], Вам необходимо создать массив объектов из ваших элементов, чтобы добавить их в строку следующим образом:

public static void AddNewRow(this DataGridView datagridview, params string[] parameters)
{
    List<object> values = new List<object>() { " ", " ", "A" };
    values.AddRange(parameters);
    datagridview.Rows.Add(values.ToArray());
}

Для большей надежности рассмотрите возможность изменения params тип объекта для params object[] parameters также.

Другие вопросы по тегам