Hi all,
Let me explain my situation i have a table A which is a foreign key to Table B and table B also has a foreign key to Table C
Now i am doing in my domain service is in the get method for table A is
return ObjectContext.TableA.Include("TableB.TableC");
Everything is working fine and returning the correct thing now i am binding TableA with my DataForm and like master detail TableB with my datagrid
Now my problem is how to perform Insert and Update in tableB remember its a master detail scenario
Now let me share the code of what i have been doing
publicIQueryable<Batch> GetBatches(){var query =this.ObjectContext.Batches.Include("GlTrans.Account");returnquery;}
This is my domain service
Now lets move to Silverlgiht Client
privatevoidLoadUserDataFromDataSource(){var loadOperation = _bgpContext.Load(_bgpContext.GetBatchesQuery());loadOperation.Completed += loadOperation_Completed;}voidloadOperation_Completed(objectsender, EventArgs e){var results = senderasLoadOperation<Batch>;if(results!=null){dfUser.ItemsSource =newObservableCollection<Batch>(results.Entities);}}
Now in the xaml part
<toolkit:DataFormx:Name="dfUser"Margin="0"AutoGenerateFields="False"BorderBrush="{x:Null}"ContentLoaded="dfUser_ContentLoaded"Background="White"CommandButtonsVisibility="Commit,Cancel,Edit,Add,Navigation"><toolkit:DataForm.EditTemplate><DataTemplate><Grid><Grid.RowDefinitions><RowDefinitionHeight="0.05*"/><RowDefinitionHeight="0.3*"/><RowDefinitionHeight="0.3*"/><RowDefinitionHeight="0.3*"/><RowDefinitionHeight="0.5*"/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinitionWidth="84"/><ColumnDefinitionWidth="0.5*"/><ColumnDefinitionWidth="57"/><ColumnDefinitionWidth="0.5*"/></Grid.ColumnDefinitions><TextBlockMargin="0"Grid.Row="1"TextWrapping="Wrap"Text="Bat Descr:"HorizontalAlignment="Left"VerticalAlignment="Center"/><TextBlockHorizontalAlignment="Left"Margin="0"Grid.Row="2"TextWrapping="Wrap"Text="Batnbr:"VerticalAlignment="Center"/><TextBlockHorizontalAlignment="Left"Margin="5,0,0,0"Grid.Row="3"TextWrapping="Wrap"Text="Period:"VerticalAlignment="Center"/><TextBoxx:Name="txtFirstName"Text="{Binding BatDescr, Mode=TwoWay}"Grid.Column="1"Margin="5"Grid.Row="1"TextWrapping="Wrap"Height="24"/><TextBoxx:Name="txtLastName"Text="{Binding Batnbr, Mode=TwoWay}"Grid.Column="1"Margin="5"Grid.Row="2"TextWrapping="Wrap"Height="24"/><telerik:RadButtonContent="Save"x:Name="Save"Grid.Row="4"Grid.Column="0"Click="Save_Click"/><telerik:RadButtonContent="Cancel"Click="Cancel_Click"Grid.Row="4"Grid.Column="1"x:Name="Cancel"/></Grid></DataTemplate></toolkit:DataForm.EditTemplate></toolkit:DataForm>
Now the grid view
<riaControls:DomainDataSourceAutoLoad="True"Name="ddsAccounts"QueryName="GetAccountsQuery"LoadedData="ddsAccounts_LoadedData"><riaControls:DomainDataSource.DomainContext><my1:BGPContext/></riaControls:DomainDataSource.DomainContext></riaControls:DomainDataSource><telerik:RadGridViewName="gLTransRadGridView"Grid.Row="1"AutoGenerateColumns="False"KeyDown="gLTransRadGridView_KeyDown"ItemsSource="{Binding ElementName=dfUser,Path=CurrentItem.GLTrans,Mode=TwoWay}"SelectionChanged="gLTransRadGridView_SelectionChanged"AddingNewDataItem="gLTransRadGridView_AddingNewDataItem"RowEditEnded="gLTransRadGridView_RowEditEnded"DataLoadMode="Asynchronous"CanUserInsertRows="True"IsSynchronizedWithCurrentItem="true"><telerik:RadGridView.Columns><telerik:GridViewComboBoxColumnHeader="Combo"DataMemberBinding="{Binding Account.AccountId,Mode=TwoWay}"SelectedValueMemberPath="AccountId"DisplayMemberPath="AccountNumber"UniqueName="cbAccounts"IsComboBoxEditable="True"/><telerik:GridViewDataColumnHeader="Tran Description"DataMemberBinding="{Binding TranDescription,Mode=TwoWay}"/><telerik:GridViewDataColumnHeader="Credit"DataMemberBinding="{Binding Credit,Mode=TwoWay}"/><telerik:GridViewDataColumnHeader="Debit"DataMemberBinding="{Binding Debit,Mode=TwoWay}"/></telerik:RadGridView.Columns></telerik:RadGridView>
Now the code which isn't doing anything is
privatevoidgLTransRadGridView_RowEditEnded(objectsender, GridViewRowEditEndedEventArgs e){gLTransRadGridView.CommitEdit();// dfUser.CommitEdit();if(!_bgpContext.IsSubmitting)_bgpContext.SubmitChanges();}privatevoidgLTransRadGridView_AddingNewDataItem(objectsender, Telerik.Windows.Controls.GridView.GridViewAddingNewEventArgs e){e.NewObject =newGLTran();}
I have added proper includes in the metadata file and the entities are getting displayed on the client.
Help is highly appreciated.
Thanks,