Good morning,
I would like to use a TreeView that's can drag and drop in a GridView
I make the TreeView but when a want to drag and drop i have a probleme the null Exception, after 4 days i can't see the problem.
Let me show you my code to help me please.
I have a class library LabelData to make the database and a data class
this is my table
and my Rows
For make the treeview, I use IdLabel to make like "categorie" and i use LName to make like "product" .
I add a heritance in on my table MyTable GroupLabel with the property LName
This is my class data.cs
And this is my behind code xaml.cs
And my Xaml document
This is all
When i try to drag items treeview to gridview i have exception on this line
(radGridView.ItemsSource as IList<Label>).Add((e.Options.Payload as Collection<Object>)[0] as Label);
The exception System.NullReferenceException was unhandled
Object reference not set to an instance of an object
Thank you for your help
I would like to use a TreeView that's can drag and drop in a GridView
I make the TreeView but when a want to drag and drop i have a probleme the null Exception, after 4 days i can't see the problem.
Let me show you my code to help me please.
I have a class library LabelData to make the database and a data class
this is my table
CREATE TABLE MyTable (IdTable Int(2), IdLabel Int(20), LName char(50) )INSERT INTO MyTable (IdTable,IdLabel,LName) VALUES (1, 200, 'firstName'); INSERT INTO MyTable (IdTable,IdLabel,LName) VALUES (2, 200, 'lastName'); INSERT INTO MyTable (IdTable,IdLabel,LName) VALUES (3, 200, 'middleName'); INSERT INTO MyTable (IdTable,IdLabel,LName) VALUES (4, 201, 'circuit'); INSERT INTO MyTable (IdTable,IdLabel,LName) VALUES (5, 201, 'series'); INSERT INTO MyTable (IdTable,IdLabel,LName) VALUES (6, 202, 'country'); INSERT INTO MyTable (IdTable,IdLabel,LName) VALUES (7, 202, 'region'); INSERT INTO MyTable (IdTable,IdLabel,LName) VALUES (8, 202, 'zipcode');For make the treeview, I use IdLabel to make like "categorie" and i use LName to make like "product" .
I add a heritance in on my table MyTable GroupLabel with the property LName
This is my class data.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; LNamespace LabelData { public class DataProvider { LabelDataContext dc; public DataProvider() { dc = new LabelDataContext(); } public IEnumerable<Label> GetLabel() { return from e in dc.MyTable group e by e.IdLabel into gr select new Label() { IdLabel = gr.Key, LName= gr }; } public IEnumerable<MyTable> Get_Table() { return from p in dc.MyTable select p; } } public class Label { public int IdLabel { get; set; } public IEnumerable<MyTable> LName{ get; set; } } } And this is my behind code xaml.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Telerik.Windows.Controls.GridView; using Telerik.Windows.Controls.DragDrop; using Telerik.Windows.Controls; using System.Collections.ObjectModel; using LabelData; using Telerik.Windows.Controls.TreeView; using System.Collections; using System.Net; using System.Windows.Media.Animation; using Telerik.Windows; LNamespace LabelMunich { /// <summary> /// Logique d'interaction pour MainWindow.xaml /// </summary> public partial class WindowTreeView : Window { public WindowTreeView() { InitializeComponent(); ProfilData.DataProvider dataProvider = new ProfilData.DataProvider(); treeView1.ItemsSource = dataProvider.GetModule(); radGridView.ItemsSource = dataProvider.Get_Table(); RadDragAndDropManager.AddDropQueryHandler(radGridView, new EventHandler<DragDropQueryEventArgs>(this.RadGridView_OnDropQuery)); RadDragAndDropManager.AddDropInfoHandler(radGridView, new EventHandler<DragDropEventArgs>(this.RadGridView_OnDropInfo)); } private void RadRibbonButton_Click(object sender, RoutedEventArgs e) { // FAjout fa = new FAjout(); formAjout fa = new formAjout(); fa.Show(); // this.ShowActivated(); } private void radTreeView_PreviewDragEnded(object sender, RadTreeViewDragEndedEventArgs e) { e.Handled = true; } private void RadGridView_OnDropQuery(object sender, DragDropQueryEventArgs e) { e.QueryResult = (e.Options.Source as RadTreeViewItem).Item is Module; } private void RadGridView_OnDropInfo(object sender, DragDropEventArgs e) { if (e.Options.Status == DragStatus.DropComplete) { (radGridView.ItemsSource as IList<Module>).Add((e.Options.Payload as Collection<Object>)[0] as Module); } } } } And my Xaml document
<Window x:Class="ProfilTandem.WindowTreeView" xmlns:northwind="clr-namespace:ProfilData;assembly=LabelData" xmlns:local="clr-namespace:LabelMunich" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:telerikDragDrop="clr-namespace:Telerik.Windows.Controls.DragDrop;assembly=Telerik.Windows.Controls" Title="MainWindow" Height="450" Width="585"> <Window.Resources> <DataTemplate x:Key="Team"> <TextBlock Text="{Binding Path=LName}"/> </DataTemplate> <HierarchicalDataTemplate DataType="{x:Type northwind:Label}" ItemsSource="{Binding Path=LName}"> <Border Width="250"> <Grid> <TextBlock Text="{Binding Path=IdLabel}" FontSize="14" FontWeight="Bold" Margin="2" > </TextBlock> </Grid> </Border> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="{x:Type northwind:GroupLabel}"> <Grid Margin="6"> <TextBlock Text="{Binding Path=LName}" Padding="2" /> </Grid> </HierarchicalDataTemplate> </Window.Resources> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <telerik:RadTreeView IsDragDropEnabled="True" Grid.Column="0" Grid.Row="1" SelectionMode="Multiple" IsEditable="True" x:Name="treeView1" Margin="0,20,0,245" PreviewDragEnded="radTreeView_PreviewDragEnded" IsDragTooltipEnabled="False" ItemsSource="{Binding}"/> <StackPanel Grid.Column="1" Grid.Row="1"> <telerik:RadGridView x:Name="radGridView" AutoGenerateColumns="False" Width="400" Height="400" HorizontalAlignment="Left" telerikDragDrop:RadDragAndDropManager.AllowDrop="True" DataContext="{Binding}" ItemsSource="{Binding}"> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=IdLabel}"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Path=LName}"/> </telerik:RadGridView.Columns> </telerik:RadGridView> </StackPanel> </Grid> </Window> This is all
When i try to drag items treeview to gridview i have exception on this line
(radGridView.ItemsSource as IList<Label>).Add((e.Options.Payload as Collection<Object>)[0] as Label);
The exception System.NullReferenceException was unhandled
Object reference not set to an instance of an object
Thank you for your help