2015-12-31 6 views
0

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

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

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

ответ

1

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

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

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

Не думал о 'Concat', приятное предложение. @ehh Обратите внимание, что это все еще работает, если 'parameters' является' object [] 'вместо этого. – OhBeWise

1

Вызов 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, а также.

Смежные вопросы