powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как в DataGrid динамически менять класс таблицы (LINQ)?
6 сообщений из 6, страница 1 из 1
Как в DataGrid динамически менять класс таблицы (LINQ)?
    #36087946
nightsilf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу написать простенькую форму позволяющую быстро внести мелкие изменения в произвольные таблицы (их очень много) базы с помощью LINQ и WPF.
Создаю DataContext, добавляю таблицы, кидаю на форму listbox (для списка таблиц) и DataGrid (для данных)
Список таблиц получается легко:
Код: plaintext
1.
            var query = from en in App.db.Mapping.GetTables() select en;
            listBox_Список_таблиц.ItemsSource = query;

Код: plaintext
1.
2.
3.
4.
5.
6.
        <ListBox HorizontalAlignment="Left" Margin="24,29,0,111"  Name="listBox_Список_таблиц" Width="194" SelectionChanged="listBox_Список_таблиц_SelectionChanged">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=TableName}" TextWrapping="Wrap" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

А вот загрузить таблицу в DataGrid не получается:
Код: plaintext
1.
2.
3.
System.Data.Linq.Mapping.MetaTable item = (System.Data.Linq.Mapping.MetaTable)listBox_Список_таблиц.SelectedItem;
var list = App.db.ExecuteQuery<object>(@"select * from " + item.TableName).ToArray();
dataGrid1.ItemsSource = list;
Получаем пустые строки (dataGrid не знает как их отображать)

Понятно что надо преобразовать list в класс соответствующей таблицы, типа:
Код: plaintext
var list = App.db.ExecuteQuery<МояТаблица15>(@"select * from " + item.TableName).ToArray();
Но как это сделать динамически, в зависимости от выбранной таблицы? Таблиц очень много, перебором очень не хочется.
...
Рейтинг: 0 / 0
Как в DataGrid динамически менять класс таблицы (LINQ)?
    #36091778
_Thor_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С ВПФ не работал, там нет св-ва типа AutoGenerateColumn, может оно стоит в false ?
...
Рейтинг: 0 / 0
Как в DataGrid динамически менять класс таблицы (LINQ)?
    #36093451
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nightsilf,

Ты уверен, что нужен именно wpf??!! Если да, то для начала ознакомься с шаблоном Model-View-ViewModel (MVVM) - может какие идеи по архитектуре придут.
...
Рейтинг: 0 / 0
Как в DataGrid динамически менять класс таблицы (LINQ)?
    #36382565
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nightsilf,

Вы победили свою проблему? У меня очень похожая ситуация..
данные приходят, успешно присваиваются ItemsSource и после этого ItemsSource содержит все данные, но ListView отображает только пустые строки.
...
Рейтинг: 0 / 0
Как в DataGrid динамически менять класс таблицы (LINQ)?
    #36383376
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nightsilf
Понятно что надо преобразовать list в класс соответствующей таблицы, типа:
Код: plaintext
var list = App.db.ExecuteQuery<МояТаблица15>(@"select * from " + item.TableName).ToArray();
Но как это сделать динамически, в зависимости от выбранной таблицы? Таблиц очень много, перебором очень не хочется.
Нужно получить нужный generic метод через рефлекшн и вызвать его. Кстати пулять запросы тоже не очень красиво, иначе зачем тогда используется linq? Через рефлекшн можно спокойно получить таблицу из датаконтекста и забиндить её.
http://stackoverflow.com/questions/232535/how-to-use-reflection-to-call-generic-method
...
Рейтинг: 0 / 0
Как в DataGrid динамически менять класс таблицы (LINQ)?
    #36916141
nicht_shiessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зы
// http://stackoverflow.com/questions/232535/how-to-use-reflection-to-call-generic-method

спасибо! полезная ссылочка.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как в DataGrid динамически менять класс таблицы (LINQ)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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