объект [] как источник данных сетки данных - PullRequest
0 голосов
/ 04 января 2012

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

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

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

Ответы [ 2 ]

2 голосов
/ 04 января 2012

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";
2 голосов
/ 04 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...