I have created a form with following:
RadGridView
RadPager
RadDataForm
RadDomainDatasource
Object is to create a master-details form. I know there is a way to define an edit template for a grid, but that is not a good solution if you have to edit a large number of fields. I therefore want the traditional master-detail form.
When i set AutoCommit to false, it will no longer lead to stack overflow, but calling .submitchanges() on the domaindatasource will return an error that you first need to end the edit. This problem can also not be solved either, since even if i call CommitEdit on the dataform and the grid, it will still say that you first need to end the edit.
<navigation:Page x:Class="RadControlsSilverlightApp1.OrganizationsView" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:my="clr-namespace:RadControlsSilverlightApp1" xmlns:my1="clr-namespace:RadControlsSilverlightApp1.Web" mc:Ignorable="d" xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" d:DesignWidth="640" d:DesignHeight="480" Title="OrganizationsView Page" xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices" <Grid x:Name="LayoutRoot"> <riaControls:DomainDataSource AutoLoad="True" Height="0" Width="0" LoadedData="organizationDomainDataSource_LoadedData" x:Name="organizationDomainDataSource" QueryName="GetOrganizationsQuery" PageSize="20"> <riaControls:DomainDataSource.DomainContext> <my1:ExqiOfficeDomainContext /> </riaControls:DomainDataSource.DomainContext> </riaControls:DomainDataSource> <riaControls:DomainDataSource AutoLoad="True" Height="0" Width="0" x:Name="countriesDomainDataSource" QueryName="GetCountriesQuery"> <riaControls:DomainDataSource.DomainContext> <my1:ExqiOfficeDomainContext /> </riaControls:DomainDataSource.DomainContext> </riaControls:DomainDataSource> <telerik:RadBusyIndicator IsBusy="{Binding IsBusy, ElementName=OrganizationsGrid}"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="300"></RowDefinition> <RowDefinition Height="50"></RowDefinition> <RowDefinition Height="400"></RowDefinition> </Grid.RowDefinitions> <telerik:RadGridView x:Name="OrganizationsGrid" ItemsSource="{Binding ElementName=organizationDomainDataSource, Path=Data}" AutoGenerateColumns="False" IsReadOnly="False" IsBusy="{Binding IsBusy, ElementName=organizationDomainDataSource}" Grid.Row="0" > <telerik:RadGridView.Columns> <telerik:GridViewDataColumn Header="Name" UniqueName="Name" Width="200"></telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Address" UniqueName="Address" Width="150"></telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Zip Code" UniqueName="Zipcode"></telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Place" UniqueName="Place" Width="150"></telerik:GridViewDataColumn> <telerik:GridViewComboBoxColumn Header="Country" UniqueName="CountryId" ItemsSource="{Binding ElementName=countriesDomainDataSource, Path=Data}" SelectedValueMemberPath="CountryId" DisplayMemberPath="Name"> </telerik:GridViewComboBoxColumn> <telerik:GridViewDataColumn Header="VAT" UniqueName="VAT" Width="150"></telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Created On" UniqueName="DateCreated"></telerik:GridViewDataColumn> </telerik:RadGridView.Columns> </telerik:RadGridView> <telerik:RadDataPager Source="{Binding Data, ElementName=organizationDomainDataSource}" Grid.Row="1"/> <telerik:RadDataForm x:Name="OrganizationsEditor" ItemsSource="{Binding ElementName=organizationDomainDataSource, Path=Data}" AutoGenerateFields="False" AutoEdit="True" AutoCommit="True" CommandButtonsVisibility="Delete,Add,Cancel,Commit" Grid.Row="2" EditEnded="RadDataForm_EditEnded"> <telerik:RadDataForm.ReadOnlyTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="180"></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <telerik:Label Grid.Column="0" Grid.Row="0" IsTabStop="False">Name:</telerik:Label> <telerik:DataFormDataField Grid.Column="1" Grid.Row="0"> <TextBox Text="{Binding Name, Mode=TwoWay}" IsEnabled="True"></TextBox> </telerik:DataFormDataField> <telerik:Label Grid.Column="0" Grid.Row="4" IsTabStop="False">Country:</telerik:Label> <telerik:DataFormComboBoxField Grid.Column="1" Grid.Row="1"> <telerik:RadComboBox SelectedValue="{Binding CountryId, Mode=TwoWay}" SelectedValuePath="CountryId" DisplayMemberPath="Name" ItemsSource="{Binding ElementName=countriesDomainDataSource, Path=Data}" IsEnabled="True" > </telerik:RadComboBox> </telerik:DataFormComboBoxField> </Grid> </DataTemplate> </telerik:RadDataForm.ReadOnlyTemplate> <telerik:RadDataForm.EditTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="180"></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <telerik:Label Grid.Column="0" Grid.Row="0" IsTabStop="False">Name:</telerik:Label> <telerik:DataFormDataField Grid.Column="1" Grid.Row="0"> <TextBox Text="{Binding Name, Mode=TwoWay}" IsEnabled="True"></TextBox> </telerik:DataFormDataField> <telerik:Label Grid.Column="0" Grid.Row="4" IsTabStop="False">Country:</telerik:Label> <telerik:DataFormComboBoxField Grid.Column="1" Grid.Row="1"> <telerik:RadComboBox SelectedValue="{Binding CountryId, Mode=TwoWay}" SelectedValuePath="CountryId" DisplayMemberPath="Name" ItemsSource="{Binding ElementName=countriesDomainDataSource, Path=Data}" IsEnabled="True" > </telerik:RadComboBox> </telerik:DataFormComboBoxField> </Grid> </DataTemplate> </telerik:RadDataForm.EditTemplate> <telerik:RadDataForm.NewItemTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="180"></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <telerik:Label Grid.Column="0" Grid.Row="0" IsTabStop="False">Name:</telerik:Label> <telerik:DataFormDataField Grid.Column="1" Grid.Row="0"> <TextBox Text="{Binding Name, Mode=TwoWay}" IsEnabled="True"></TextBox> </telerik:DataFormDataField> <telerik:Label Grid.Column="0" Grid.Row="4" IsTabStop="False">Country:</telerik:Label> <telerik:DataFormComboBoxField Grid.Column="1" Grid.Row="1"> <telerik:RadComboBox SelectedValue="{Binding CountryId, Mode=TwoWay}" SelectedValuePath="CountryId" DisplayMemberPath="Name" ItemsSource="{Binding ElementName=countriesDomainDataSource, Path=Data}" IsEnabled="True" > </telerik:RadComboBox> </telerik:DataFormComboBoxField> </Grid> </DataTemplate> </telerik:RadDataForm.NewItemTemplate> </telerik:RadDataForm> </Grid> </telerik:RadBusyIndicator> </Grid> </navigation:Page> To experience stack overflow, run the form then try to change current row... this will block IE and eventually return stack overflow