or
| GridViewTableDefinition tdPayment = new GridViewTableDefinition(); |
| GridViewTableDefinition tdDetail = new GridViewTableDefinition(); |
| tdPayment.DataSource = MySalePayments = GetSalePaymentsData(); |
| tdPayment.AutoGenerateFieldDescriptors = false; |
| TableRelation tr = new TableRelation(); |
| tr.FieldNames.Add(new FieldDescriptorNamePair("Receipt", "Receipt")); |
| tdPayment.Relation = tr; |
| GridViewDataColumn paymentType = new GridViewDataColumn(); |
| paymentType.UniqueName = "SalePaymentType"; |
| paymentType.Header = "PaymentType"; |
| paymentType.DataType = typeof(short); |
| GridViewDataColumn amount = new GridViewDataColumn(); |
| amount.UniqueName = "Amount"; |
| amount.Header = "Amount"; |
| amount.DataType = typeof(decimal); |
| tdPayment.FieldDescriptors.Add(paymentType); |
| tdPayment.FieldDescriptors.Add(amount); |
| tdDetail.AutoGenerateFieldDescriptors = false; |
| tdDetail.DataSource = MySaleDetails = GetSaleDetailData(); |
| tdDetail.Relation = tr; |
| GridViewDataColumn itemId = new GridViewDataColumn(); |
| itemId.UniqueName = "ItemId"; |
| itemId.Header = "ItemId"; |
| itemId.DataType = typeof(string); |
| GridViewDataColumn saleQty = new GridViewDataColumn(); |
| saleQty.UniqueName = "SaleQuantity"; |
| saleQty.Header = "Sale Qty"; |
| saleQty.DataType = typeof(short); |
| GridViewDataColumn unitPrice = new GridViewDataColumn(); |
| unitPrice.UniqueName = "UnitPrice"; |
| unitPrice.Header = "Price"; |
| unitPrice.DataType = typeof(decimal); |
| GridViewDataColumn discount = new GridViewDataColumn(); |
| discount.UniqueName = "Discount"; |
| discount.Header = "Discount"; |
| discount.DataType = typeof(decimal); |
| GridViewDataColumn individualDiscount = new GridViewDataColumn(); |
| individualDiscount.UniqueName = "IndividualDiscount"; |
| individualDiscount.Header = "Ind.Discount"; |
| individualDiscount.DataType = typeof(decimal); |
| tdDetail.FieldDescriptors.Add(itemId); |
| tdDetail.FieldDescriptors.Add(saleQty); |
| tdDetail.FieldDescriptors.Add(unitPrice); |
| tdDetail.FieldDescriptors.Add(discount); |
| tdDetail.FieldDescriptors.Add(individualDiscount); |
| radGridViewSalesList.TableDefinition.ChildTableDefinitions.Add(tdPayment); |
| radGridViewSalesList.TableDefinition.ChildTableDefinitions.Add(tdDetail); |
When Run in Q3, AutoGenerateFieldDescriptors was simply ignored showing all columns.
In Q3, it was suggested that I use AutoGenerateColumns of GridViewDataControl .
I was able to do it with single child table using DataLoading handler as shown in the demo source code.
But I don't know how to do it with two child tables.
| // Add grouping according to device, then parameter category |
| MainGrid.GroupDescriptors.Add( |
| new GroupDescriptor() |
| { |
| Member = "OwnerContainer", |
| SortDirection = ListSortDirection.Ascending |
| }); |
| MainGrid.GroupDescriptors.Add( |
| new GroupDescriptor() |
| { |
| Member = "ParameterCategory", |
| SortDirection = ListSortDirection.Ascending |
| }); |
| public class DataSource : DependencyObject |
| { |
| public List<DataSource> Children { get; set; } |
| public string Name { get; set; } |
| public DataSource() |
| { |
| Children = new List<DataSource>(); |
| } |
| } |
| <Window.Resources> |
| <local:DataSource x:Key="DataSource"> |
| <local:DataSource.Children> |
| <local:DataSource Name="1"> |
| <local:DataSource.Children> |
| <local:DataSource Name="2"> |
| <local:DataSource.Children> |
| <local:DataSource Name="3"> |
| <local:DataSource.Children> |
| <local:DataSource Name="4"/> |
| </local:DataSource.Children> |
| </local:DataSource> |
| </local:DataSource.Children> |
| </local:DataSource> |
| </local:DataSource.Children> |
| </local:DataSource> |
| </local:DataSource.Children> |
| </local:DataSource> |
| </Window.Resources> |
| <telerik:RadTreeView ItemsSource="{Binding Path=Children, Source={StaticResource DataSource}}" IsEditable="True"> |
| <telerik:RadTreeView.ItemTemplate> |
| <HierarchicalDataTemplate ItemsSource="{Binding Path=Children}"> |
| <TextBlock Text="{Binding Path=Name}"/> |
| </HierarchicalDataTemplate> |
| </telerik:RadTreeView.ItemTemplate> |
| <telerik:RadTreeView.ItemEditTemplate> |
| <DataTemplate> |
| <TextBox Text="{Binding Path=Name, Mode=TwoWay}"/> |
| </DataTemplate> |
| </telerik:RadTreeView.ItemEditTemplate> |
| </telerik:RadTreeView> |

| Private Sub radGridViewSelection_SelectionChanged(ByVal sender As Object, ByVal e As Telerik.Windows.Data.SelectionChangeEventArgs) |
| label1.Content = radGridViewSelection.SelectedRecord.Fields("CustomerID").ToString |
| End Sub |

| radGridViewDataBinding.FilterDescription = null; |
| radGridViewDataBinding.GroupDescriptions.Clear(); |
| radGridViewDataBinding.SortDescriptions.Clear(); |
| radGridViewDataBinding.Columns.Clear(); |
| radGridViewDataBinding.AutoGenerateColumns = true; |
| radGridViewDataBinding.ItemsSource = null; |
| radGridViewDataBinding.ItemsSource = GetXmlData(); |