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