powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Использование связанных таблиц в Silverlight Business Application
26 сообщений из 26, показаны все 2 страниц
Использование связанных таблиц в Silverlight Business Application
    #37213917
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день в этой теме мне бы хотелось обсудить работу с связанными таблицами в Silverlight Business Application
и начать с разбора примера

в проекте есть страница Add.xaml
в которой Вот этот кусок кода
Код: plaintext
<ComboBox ItemsSource="{Binding Source={StaticResource cbddsEmployee}, Path=Data}" SelectedItem="{Binding Path=Employee, Mode=TwoWay}" DisplayMemberPath="FirstName" ex:ComboBox.Mode="AsyncEager"/>

подскажите пожалуйста правильно ли я понял что он (кусок кода) делает следующее:
Создает элемент ComboBox коллекция которого ItemsSource заполняется элементами с использованием объекта cbddsEmployee (который является экземпляром класса ComboBoxDataSource получающего коллекцию сущностей Employee), DisplayMemberPath указывает какое поле выводится в качестве маркера. При выборе элемента в ComboBox, происходит присваивание полю newRecord.Employee элемента коллекции сущностей Employee.

Или так:

В свойство ComboBox.ItemsSource записывается коллекция сущностей Employee при выборе одного из элементов ComboBox, происходит присваивание полю newRecord.Employee элемента коллекции сущностей Employee.
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37213978
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
samun,
ComboBoxExtensions обсуждается здесь
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37214263
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

по сути все варианты верны.

За исключением того, что в ComboBox значения не записываются, мы на них ссылаемся делая Binding (если просто: делаем привязку к данным)

немного о том, почему был сделан ComboBoxExtension:
в ComboBox.ItemsSource присваивается Источник значений
Отступлениепо сути Источник может быть любым, но т.к. стандартный ComboBox глючит, один умный Microsoft MVP взялся за проблему и написал небольшой Extension (класс расширение), для возможности использовать ComboBox в связке с RIA Services
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37215107
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

в файле Add.xaml.cs
Код: plaintext
private NORTHWNDDomainContext domainContext { get { return Application.Current.Resources["DomainContext"] as NORTHWNDDomainContext; } }
а почему не сделать просто вот так:
Код: plaintext
private NORTHWNDDomainContext domainContext = new NORTHWNDDomainContext();

В чем преимущества, объявить ресурс
Код: plaintext
<appWeb:NORTHWNDDomainContext x:Key="DomainContext"/> 
и потом на него ссылаться ?
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37215197
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,
Для данного примера модель данных выглядит вот так:

и в примере происходит запись только в таблицу Orders (заказ) и связывание с уже имеющимися записями в таблицах Employees (сотрудники), Customers (Клиенты).

Вот предположим стояло бы другая задача добавить клиента и сразу добавить ему заказы!
т.е. создали поле
Код: plaintext
private  Customer newRecord { get; set; }

заполнить поле this.newRecord1.Orders
вызвали
Код: plaintext
this.domainContext.Customers.Add(newRecord); 

правильно ?
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37215372
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Да и пример у меня при добавлении новой записи в Order
выдает исключение для строки
Код: plaintext
this.domainContext.SubmitChanges(SubmitCompleted, null);
System.InvalidOperationException не обработано пользовательским кодом
Message=Entity 'Order : 0' is currently being edited and has uncommitted changes. A call to BeginEdit must be followed by a call to EndEdit or CancelEdit before changes can be submitted.
StackTrace:
в System.ServiceModel.DomainServices.Client.Entity.VerifyNotEditing()
в System.ServiceModel.DomainServices.Client.EntityChangeSet.Validate(ValidationContext validationContext)
в System.ServiceModel.DomainServices.Client.DomainContext.ValidateChangeSet(EntityChangeSet changeSet, ValidationContext validationContext)
в System.ServiceModel.DomainServices.Client.DomainContext.SubmitChanges(Action`1 callback, Object userState)
в SLRiaServicesExSample.Views.fOrder.Add.btnSaveRecord_Click(Object sender, RoutedEventArgs e)
в System.Windows.Controls.Primitives.ButtonBase.OnClick()
в System.Windows.Controls.Button.OnClick()
в System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
в System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
в MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
InnerException:
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37216390
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

вот, почитай тему, я там отвечал на вопрос "почему должен быть один единственный DomainContext" - так же это описано в документации по RIA Services, просто мало кто такие документы читает.
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37216411
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

по поводу ошибки, глянь внимательно на схему, ты добавляешь "Order" в "Customer", а кто будет заполнять "Employee" в "Order" ?
так можно делать если схема позволяет, к примеру ошибка может быть вызвана тем, что ключ в "Order" нужно задавать самостоятельно.

так же "не понятные" ошибки могут валиться из-за использования множества DomainContext (см. ответ выше)
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37217902
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

У меня это ошибка на скаченном примере , т.е. я скачал (не изменяя ничего в приложении) запустил и при добавлении новой записи (нажатие кнопки New record, заполнил и нажал кнопку Save )

У меня вот эта ошибка:
System.InvalidOperationException не обработано пользовательским кодом
Message=Entity 'Order : 0' is currently being edited and has uncommitted changes. A call to BeginEdit must be followed by a call to EndEdit or CancelEdit before changes can be submitted.
StackTrace:
в System.ServiceModel.DomainServices.Client.Entity.VerifyNotEditing()
в System.ServiceModel.DomainServices.Client.EntityChangeSet.Validate(ValidationContext validationContext)
в System.ServiceModel.DomainServices.Client.DomainContext.ValidateChangeSet(EntityChangeSet changeSet, ValidationContext validationContext)
в System.ServiceModel.DomainServices.Client.DomainContext.SubmitChanges(Action`1 callback, Object userState)
в SLRiaServicesExSample.Views.fOrder.Add.btnSaveRecord_Click(Object sender, RoutedEventArgs e)
в System.Windows.Controls.Primitives.ButtonBase.OnClick()
в System.Windows.Controls.Button.OnClick()
в System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
в System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
в MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
InnerException:
Это только у меня такая ошибка ?
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37217917
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

ок, посмотрю, нужно было сразу сказать, что эта ошибка валится в примере.
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37219015
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Буду ждать т.к. на основе Вашего примера, хочу реализовать добавление (редактирование удаление ) клиента и добавление (редактирование удаление ) заказов данному клиенту.
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37219566
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

закинул изменения.

пересоздал проект, т.к. по какой-то странной причине не грузились стили.

причина появления ошибки:
в коде перед отправкой данных нужно вызвать [имя_DataForm].CommitEdit(), почитай что это значит.
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37219745
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

вот тут написано
авторCommitEdit
Notifies the rest of the code that current state of the item must be saved. An overloaded method exists to decide whether to remain in Edit mode or switch to ReadOnly mode after the method executes.

Сообщает остальному коду, что текущее состояние должно быть сохранено. перегруженный метод существует, чтобы решить, следует ли оставаться в режиме редактирования или переключиться на ReadOnly режиме после метод выполняет.
Но смысл Метода не понял.
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37219771
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

так вот же ответ:
авторСообщает остальному коду, что текущее состояние должно быть сохранено
в момент создания/редактирования записи делается ее копия и чтобы результат оказался в записи, нужно сделать CommitEdit.
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37219782
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,
понятно.
доделаю изменения и у меня есть вопросы которые лучше обсудить на примере.
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37220303
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Вы в Вашем примере используете вот такую конструкцию редактирования шаблона DataForm:
Код: plaintext
1.
2.
3.
4.
5.
6.
<toolkit:DataForm >
 <toolkit:DataForm.NewItemTemplate>
   <DataTemplate>
   </DataTemplate>
 </toolkit:DataForm.NewItemTemplate>
</toolkit:DataForm>

В интернете распространена вот такая конструкция :
Код: plaintext
1.
2.
3.
4.
5.
6.
<toolkit:DataForm >
  <toolkit:DataForm.EditTemplate>
    <DataTemplate>
    </DataTemplate>
 </toolkit:DataForm.EditTemplate>
</toolkit:DataForm>

Подскажите пожалуйста в чем отличие преимущества использования NewItemTemplate перед EditTemplate?
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37220405
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

этот ответ ты можешь найти зайдя в Гугл.

немного резко, но все же:
если ты не сможешь самостоятельно изучать технологии, а в программировании без этого никак, то этим не стоит заниматься.
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37224885
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,
ну пример опять не работает. вот ошибка при попытки просмотреть базу.

"Не удалось открыть базу данных "BNORTHWND.MDF", поскольку она имеет версию 661. Данный сервер поддерживает версию 655 и более ранние. Переход на предыдущую версию не поддерживается."
попробовал вот это
не помогло.
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37225513
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

это стандартная БД для примеров от Microsoft, можно взять тут
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37225728
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

нашел ответ
Нужен для изменения представления (внешнего вида ) DataForm:
в режиме редактирования
Код: plaintext
1.
<toolkit:DataForm.EditTemplate>
---------------------------------
В режиме просмотра (и такое у нас есть:))
Код: plaintext
1.
<toolkit:DataForm.ReadOnlyTemplate>
-------------------
В режиме добавления новой записи
Код: plaintext
1.
 <toolkit:DataForm.NewItemTemplate>
-----------------------
Для изменения шапки DataForm
Код: plaintext
<toolkit:DataForm.HeaderTemplate>
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37225779
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

У меня еще вопрос по вашему примеру вот в Вашем примере хотел что бы поле Employee на странице Add.xaml
Код: plaintext
1.
2.
 <toolkit:DataField Label="Employee">
<ComboBox ItemsSource="{Binding Source={StaticResource cbddsEmployee}, Path=Data}" SelectedItem="{Binding Path=Employee, 
Mode=TwoWay}" DisplayMemberPath="FirstName" ex:ComboBox.Mode="AsyncEager"/> </toolkit:DataField>
сделать обязательным (т.е. должен обязательно кого то выбрать).
я конечно могу сделать
Код: plaintext
 <toolkit:DataField Label="Employee" IsRequired="True" >
Но кроме того что оно станет черным проверка не произойдет.
добавить в файле NORTHWNDDomainService.metadata.cs атрибут [Required] для класса OrderMetadata:
Код: plaintext
1.
2.
3.
[Required]
[Include]
public Employee Employee { get; set; }
выдает ошибку
Ошибка 1 Ассоциация "SLRiaServicesExSampleWeb.Order.Employee" помечена атрибутом RequiredAttribute. Удалите атрибут RequiredAttribute и вместо этого отметьте им нижележащие элементы внешних ключей. SLRiaServicesExSample
т.е. сделать так что бы поле было обязательным я могу например вот так :
подписаться на событие EditEnding объекта dfAddRecord
Код: plaintext
<toolkit:DataForm x:Name="dfAddRecord" CommandButtonsVisibility="All" EditEnding="dfAddRecord_EditEnding">
и обработать его вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
private void dfAddRecord_EditEnding(object sender, DataFormEditEndingEventArgs e)
        {
            if (e.EditAction == DataFormEditAction.Commit)
            {
                if (((Order)(((DataForm)sender).CurrentItem)).Employee == null)
                {
                    e.Cancel = true;
                    MessageBox.Show("Поле Employee пустое");
                }
           }
        }

но вот не нравится мне этот способ.
может вы знаете более красивое решение ?? (как сделать так чтобы обязательно был выбран Employee)
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37226659
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, подписываться никуда не нужно, почитай про RIA Services, там все сделано по умному.

в твоем случае компилятор правильно ругается, т.к. схема БД не предполагает обязательное наличие поля Employee в таблице Order, всегда отталкивайся от схемы.
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37230402
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Для riaControls:DomainDataSource можно установить фильтр например вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Style TargetType="riaControls:DomainDataSource" x:Key="DDS">
        <Setter Property="LoadSize" Value="{StaticResource DDSLoadSize}"/>
        <Setter Property="PageSize" Value="{StaticResource DDSPageSize}"/>
        <Setter Property="AutoLoad" Value="True"/>
        <Setter Property="DomainContext" Value="{StaticResource DomainContext}"/>

    </Style>

<riaControls:DomainDataSource AutoLoad="True" LoadedData="teamDomainDataSource_LoadedData" Name="teamDomainDataSource" QueryName="GetTeamQuery" 
                                      Style="{StaticResource DDS}" >
            <riaControls:DomainDataSource.FilterDescriptors>
                <riaControls:FilterDescriptor PropertyPath="ProjectId" Operator="IsEqualTo" Value="{Binding projectid}"/>
            </riaControls:DomainDataSource.FilterDescriptors>
        </riaControls:DomainDataSource>
Возможно ли использование фильтров для ComboBoxDataSource?
Или использовать добавление параметров к запросу, вить не всегда нужен весь результат
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37230852
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

у тебя ведь есть конрол, посмотри, есть ли там что-то схожее или нет.

если в программе хочется использовать полноценный контрол для фильтрации данных, можешь взять мой контрол .
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37230982
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Контрол очень интересный, но мне пока нужен фильтр для источника данных (ComboBoxDataSource) отображаемых в ComboBox.
получается что ComboBoxDataSource нельзя использовать для запросов с параметром ?
для вот таки:
Код: plaintext
1.
2.
3.
4.
5.
  
publicIQueryable<MyEntity> GetMyEntity(string filter)
  {
   //…
  }
...
Рейтинг: 0 / 0
Использование связанных таблиц в Silverlight Business Application
    #37234566
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

у меня ведь как-то получилось

п.с. у тебя все есть, но по какой-то причине ты НЕ пытаешься найти ответ самостоятельно - учись самостоятельности.
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Использование связанных таблиц в Silverlight Business Application
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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