2016-07-07 4 views
2

У меня есть 2D-массив с различными типами данных (int, string, float).Как связать объект [,] с datagridview?

Как привязать его к виду сетки данных?

Или преобразовать его в представление данных или BindingList или DataTable, а затем привязать его к datagridview?

изменения: Объект [,] полностью динамические данные (разные нет строк, столбцы, типы данных, как и данных дампа.): (Excel листов)

[0, х] "kjslwe" 3 «ш "45 "ERER" 643 "reew" "54" 56 34

[1, у] 23 "е" 1 "научная фантастика" 123213 "DS" 343433

+1

Какова структура данных? Поделитесь образцом данных. Также, если это вопрос winforms, удалите тег asp.net. –

+0

Я отредактировал вопрос, добавив дополнительные сведения. Это массив 2D-объектов, который хранит несколько типов данных в строках и столбцах (может иметь значение null в нескольких столбцах) –

+0

Зачем связано? Вы можете создавать строки самостоятельно, анализируя данные в вашем коде. – rheitzman

ответ

1

вы не используете 2D Array, вы используете a Jagged Array. Ядром массива является массив, элементами которого являются массивы. Элементы зубчатого массива могут быть разных размеров и размеров. Ящурный массив иногда называют «массивом массивов».

Чтобы показать зубчатый массив в DataGridView, вы можете вначале рассчитать количество колонок, которое вам нужно, и установить ColumnCount свойство сетки. Затем добавьте строки, используя перегрузку Add метода Rows коллекция сетки, которая принимает param object[]. Например:

object[][] data = new object[][]{ 
     new object[] {"kjslwe", 3, "w", 45, "erer", 643, "reew", "54", 56, 34}, 
     new object [] {23, "e", 1, "so", 123213, "ds", 343433} 
}; 

var columns = data.Max(x => x.Count());   /* Calculate number of columns */ 
grid.ColumnCount = columns;      /* Set column count of grid */ 
data.ToList().ForEach(x => grid.Rows.Add(x)); /* Add rows     */ 

enter image description here

В приведенном выше примере, я также установить эти свойства:

grid.AllowUserToAddRows = false; 
grid.AllowUserToDeleteRows = false; 
grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader; 
+0

Спасибо за решение человека. Это сработало –