Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Коллекция анонимных объектов в DataSource (RadGrid) / 2 сообщений из 2, страница 1 из 1
16.01.2013, 16:40
    #38112510
gamu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекция анонимных объектов в DataSource (RadGrid)
Добрый день. Делаю грид для показа различных наборов данных (2 отчета), набор колонок грида (полей объекта) свой у каждого набора данных поэтому в качестве источника данных использую делегат Func<DataTable,List<object>> где DataTable - набор записей из БД который нужно отобразить в гриде. Данные из DataTable трансформирую в анонимную коллекцию так
Код: c#
1.
Select(n=>new {Поле1=n[0],Поле2=n[1]})

чтоб не писать отдельно код для вставки колонок и мапинга их к источнику данных. Делегат возвращает коллекцию данных нормально, но когда это все подъвязывается к гриду и вызывается DataBind падает с ошибкой: Cannot find any bindable properties in an item from the datasource. Но если коллекцию анонимных объектов создать в той-же процедуре где и привязка к DataSource все работает.
Вот так работает:
Код: c#
1.
2.
3.
4.
5.
            DataTable dt = GetReportTable(p1, p2, p3);
            var obj = new {Поле1= "dsdsd", Поле3 = "dfdfdf", Поле2= "sdsdsd"};
            List<object> dsList=new List<object>();
            dsList.Add(obj);
            RadGrid1.DataSource = dsList;


и так работает:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            DataTable dt = GetReportTable(p1, p2, p3);;
            var obj = new {Поле1= "dsdsd", Поле3 = "dfdfdf", Поле2= "sdsdsd"};
            List<object> dsList=new List<object>();
            dsList.Add(obj);
            foreach (var item in ColumnAdapter(dt)) //ColumnAdapter - делегат
            {
                dsList.Add(item);
            }
            
            RadGrid1.DataSource = dsList;


а так нет:
и так работает:
Код: c#
1.
2.
3.
4.
5.
6.
            DataTable dt = GetReportTable(p1, p2, p3);;
            List<object> dsList = ColumnAdapter(dt); //Данные приходят
            
            RadGrid1.DataSource = dsList; //В DataSource данные есть
            /////где-то в другом методе//////
            DataBind() //Cannot find any bindable properties in an item from the datasource


Нипонятно, чего ему не хватает для счастья
...
Рейтинг: 0 / 0
16.01.2013, 17:09
    #38112598
gamu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекция анонимных объектов в DataSource (RadGrid)
Ошибку понял, нужно так: Select(n=>new {Поле1=n[0].ToString(),Поле2=n[1].ToString()}) иначе поля результирующего объеткта имеют тип object что не нравится гриду
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Коллекция анонимных объектов в DataSource (RadGrid) / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]