2012-01-04 4 views
0

My Telerik OpenAccess ORM отображает и выполняет хранимую процедуру для меня, которая возвращает массив объекта [] в качестве результата.объект [] как источник данных datagridview

Теперь я хочу связать этот результат с моим datagridview, который имеет 4 колонок, но мне трудно это делать.

Какой был бы лучший способ сделать это?

+0

Я не использовал контроль DataGridView в то время, но знаю, что вы можете привязать к элементам массива следующим образом: '[0],' [1], '[2]' и т.д. – dana

ответ

2

DataGridView привязан к свойству объекта.

Итак, вы можете конвертировать свой объект [], чтобы ваш datagridview мог читать.

  var datasource = from p in (object[]) 
          select new 
          { 
           Column1 = p.GetType().GetProperty("property1").GetValue(p, null), 
           Column2 = p.GetType().GetProperty("property2").GetValue(p, null), 
           Column3 = p.GetType().GetProperty("property3").GetValue(p, null), 
           Column4 = p.GetType().GetProperty("property4").GetValue(p, null), 
          }; 


      dataGridView1.DataSource = datasource; 

      dataGridView1.Columns[0].DataPropertyName = "Column1"; 

      dataGridView1.Columns[1].DataPropertyName = "Column2"; 

      dataGridView1.Columns[2].DataPropertyName = "Column3"; 

      dataGridView1.Columns[3].DataPropertyName = "Column4"; 
+0

Но для этого у моих столбцов должно быть имя, например property1, property2, правильно? Проблема в том, что имена столбцов и свойств отсутствуют. Это просто объект [] с объектом []. – Tys

+0

Можете ли вы рассказать мне о своей структуре объекта? номер ? строка? или пользовательский класс? – shenhengbin

+0

Объекты содержат некоторое число и некоторые строковые значения. Нет пользовательских классов. – Tys

2

К сожалению, элемент управления DataGridView (как и другие элементы управления, которые поддерживают привязку данных в Windows Forms) не может принять object[] в качестве источника данных. Хотя он не будет создавать исключение, он не сможет обнаружить свойства/столбцы через отражение, так как каждый элемент в массиве просто имеет тип object. Вам нужно скопировать элементы массива в строго типизированный список или, альтернативно, не общий набор, например ArrayList (который использует другую логику для обнаружения свойств своих элементов) и привязан к этой новой коллекции.

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