Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2012, 13:53   #1
anlu
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 34
По умолчанию entity-framework в wpf

Всем доброго времени суток!
Такая проблема не могу вывести базу в dataGrid в wpf. на winform все прекрассно работает. Вот как я делаю в windowsform:
есть база по имени bd, в ней отдна таблица по имени tablica. Закидывю ado.net entity data model в нем выбираю свою базу и таблицу. Дальше на форму кидаю DataGridView сверху на нем нажимаю на маленький тругольник (если чесно не знаю как он называется), вот там в Choose data source выбираю Add project data source, после выбираю object там выбираю таблицу и все. Ну и в коде ещё провисываю
Код:
BdEntities context = new BdEntities();
dataGridView1.DataSource = context.Tablica;
Вот и все полсе етого моя сущносная модель прикрасно выводится и все замечательно работает! Но на wpf как я не пытался я нихрена не могу вывести её в DataGrid, я уже не знаю что делать((
Кто знает как вывести в DataGrid помогите пожалуйста!!!
anlu вне форума Ответить с цитированием
Старый 28.05.2012, 12:31   #2
anlu
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 34
По умолчанию

Да ладно, что никто не знает???
anlu вне форума Ответить с цитированием
Старый 28.05.2012, 21:33   #3
DimaTs
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 60
По умолчанию

ну если у вас в таблице БД все колонки важные и нормальные (не foreign keys) с точки зрения воспритятия человеком, то недурственно было бы поставить в true свйоство грида AutoGenerateColumns называется
в противном случае пошаманить придется, если не подойдет пишите, расскажу как
DimaTs вне форума Ответить с цитированием
Старый 28.05.2012, 22:55   #4
anlu
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 34
По умолчанию

Спасибо я немного разобрался. Получается устанавливаю свойство AutoGenerateColumns в true после в Window_Loaded пишу след. код:
Код:
BdEntities context = new BdEntities();
content.DataContext = ctx;
dataGrid1.ItemsSource = context.tablica;
и всё работает)) и даже очень много покапавшись по нету я нашел как установить фиксированные столбцы, надо в XAML прописать:
Код:
 <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding f}" Header="Фамилия" Width="40"/>
                <DataGridTextColumn Binding="{Binding I}" Header="Имя" Width="100"/>
                <DataGridTextColumn Binding="{Binding O}" Header="отчество" Width="100"/
                <DataGridTextColumn Binding="{Binding age}" Header="а" Width="100"/
            </DataGrid.Columns>
Где F I O age - имя столбцов в базе.
Тажке у меня получаеться добавить поля программно:
Код:
            context.tablica.AddObject(new tablica() { f = "иванов", i="иван", o="иванович", age = 20});
            context.SaveChanges();
И вот осталось 2 проблемы:
1: вывести в ListBox только Фио, а другие столбцы нет
2: и в зовисимоти какое ФИО выбрано в ListBox, изменить там значение age

Помогите пожалуйста, если знаете
anlu вне форума Ответить с цитированием
Старый 29.05.2012, 09:59   #5
DimaTs
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 60
По умолчанию

аналогично все, вам надо в листбокс класть объект какой хотите, а потом должно быть свойство DisplayMember если ниичего не путаю, вот туда ставьте название поля в таблице его и покажет

listbox.DisplayMember = "Name";
DimaTs вне форума Ответить с цитированием
Старый 29.05.2012, 11:00   #6
anlu
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 34
По умолчанию

да показывает одно поле, а как мне вывести 3 поля например??
anlu вне форума Ответить с цитированием
Старый 29.05.2012, 19:47   #7
DimaTs
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 60
По умолчанию

создаете свойство в этом своем классе(если он генерируемый, то разумеется в partial), вида
Код:
public string DisplayInformation
{
       get { return string.Format("{0} {1} - {2}", Name, LastName, Age); }
}
и потом
listbox.DisplayMember = "DisplayInformation";
DimaTs вне форума Ответить с цитированием
Старый 31.05.2012, 12:34   #8
anlu
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 34
По умолчанию

Да невыходит чего то( с одним да, все норм, а как только два столбца указываю, то тогда ничего не происходит(
anlu вне форума Ответить с цитированием
Старый 01.06.2012, 19:07   #9
DimaTs
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 60
По умолчанию

быть может, код покажете?
DimaTs вне форума Ответить с цитированием
Старый 01.06.2012, 21:34   #10
anlu
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 34
По умолчанию

Если вот так, то в Listbox вообще ничего не происходит
Код:
        public string Display
        {
            get { return string.Format("f i"); }
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {

            listBox1.DisplayMemberPath=Display;
            listBox1.ItemsSource = context.Tablica;
        }
если написать только f, то один столбец нормально выведет.
Также ещё пробовал:
Код:
        Tablica t = new Tablica();

        public string Display
        {
            get { return string.Format("{0} {1}",t.f,t.i); }
        }
тогда выводит:
Код:
bd.Primer.Tablica
bd.Primer.Tablica
{NewItemPlaceholder}
anlu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как связать Entity FrameWork + PostgreSql! Волкодав Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 1 23.04.2012 11:12
Подключение к удаленной Базе Данных с использованием Entity FrameWork Волкодав Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 18.04.2012 10:14
ADO.net Entity Framework adwaer Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 3 29.01.2010 13:49