This question is locked. New answers and comments are not allowed.
Hi Team,
I have a DataTable, which implements the INotifyCollectionChanged...
However, the CollectionChanged is always equal to null......
This is because the RadGridView doesn't know the CollectionChanged exists.
We construct our RadGridView in codebehind and just need to wire it up to the CollectionChanged event. How do I do this?
Cheers
Clinton
I have a DataTable, which implements the INotifyCollectionChanged...
public event NotifyCollectionChangedEventHandler CollectionChanged;protected virtual void OnCollectionChanged( ){ if( CollectionChanged != null ) { CollectionChanged( this, new NotifyCollectionChangedEventArgs( NotifyCollectionChangedAction.Reset ) ); }}However, the CollectionChanged is always equal to null......
This is because the RadGridView doesn't know the CollectionChanged exists.
We construct our RadGridView in codebehind and just need to wire it up to the CollectionChanged event. How do I do this?
Cheers
Clinton
4 Answers, 1 is accepted
0
Hi,
Vlad
the Telerik team
Can you clarify more about your DataTable. Is is this one?
All the best,Vlad
the Telerik team
Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>
0
Clinton
Top achievements
Rank 1
answered on 30 Jan 2012, 12:07 AM
Hi Vlad,
We're using our own DataTable, I've downloaded a project with your one, which is very nice. I hadn't seen the DynamicObject before.
I think I have a better idea as to what's going on, I'll be looking at it today, if I have any further questions, I'll post them here.
Cheers
Clinton
We're using our own DataTable, I've downloaded a project with your one, which is very nice. I hadn't seen the DynamicObject before.
I think I have a better idea as to what's going on, I'll be looking at it today, if I have any further questions, I'll post them here.
Cheers
Clinton
0
Clinton
Top achievements
Rank 1
answered on 30 Jan 2012, 01:53 AM
Hi Vlad,
I've made a few changes to the SilverlightDataTable project. One of the things that was confusing me was the casting from the DataContext to a DataTable when adding a row. This isn't needed to be done with the INotifyCollectionChanged as far as I can tell. I thought this might help others also.
Plus a catch for delete if no rows are selected:-
I'm looking at the differences in your DataTable and what the differences are in ours. I think ours has a different structure which is why it doesn't work as well.
Clinton
I've made a few changes to the SilverlightDataTable project. One of the things that was confusing me was the casting from the DataContext to a DataTable when adding a row. This isn't needed to be done with the INotifyCollectionChanged as far as I can tell. I thought this might help others also.
Plus a catch for delete if no rows are selected:-
using System;using System.Windows.Controls;using Telerik.Data;using System.Windows;namespace SilverlightDataTable{ public partial class Page : UserControl { string[ ] names = new string[ ] { "Côte de Blaye", "Boston Crab Meat", "Singaporean Hokkien Fried Mee", "Gula Malacca", "Rogede sild", "Spegesild", "Zaanse koeken", "Chocolade", "Maxilaku", "Valkoinen suklaa" }; decimal[ ] prizes = new decimal[ ] { 23.25M, 9.00M, 45.60M, 32.00M, 14.00M, 19.00M, 263.50M, 18.40M, 3.00M, 14.00M }; bool[ ] bools = new bool[ ] { true, false, true, false, true, false, true, false, true, false }; DataTable table = null; private readonly Random rnd = new Random( ); public Page( ) { InitializeComponent( ); table = new DataTable( ); table.Columns.Add( new DataColumn( ) { ColumnName = "ID", DataType = typeof( int ) } ); table.Columns.Add( new DataColumn( ) { ColumnName = "Name", DataType = typeof( string ) } ); table.Columns.Add( new DataColumn( ) { ColumnName = "UnitPrice", DataType = typeof( decimal ) } ); table.Columns.Add( new DataColumn( ) { ColumnName = "Date", DataType = typeof( DateTime ) } ); table.Columns.Add( new DataColumn( ) { ColumnName = "Discontinued", DataType = typeof( bool ) } ); for( int i = 0; i < 5; i++ ) { var row = table.NewRow( ); row[ "ID" ] = i; row[ "Name" ] = names[ rnd.Next( 9 ) ]; row[ "UnitPrice" ] = prizes[ rnd.Next( 9 ) ]; row[ "Date" ] = DateTime.Now.AddDays( i ); row[ "Discontinued" ] = bools[ rnd.Next( 9 ) ]; table.Rows.Add( row ); } DataContext = table; } private void Button1_Click( object sender, System.Windows.RoutedEventArgs e ) { var row = table.NewRow( ); row[ "ID" ] = table.Rows.Count; row[ "Name" ] = names[ rnd.Next( 9 ) ]; row[ "UnitPrice" ] = prizes[ rnd.Next( 9 ) ]; row[ "Date" ] = DateTime.Now.AddDays( table.Rows.Count ); row[ "Discontinued" ] = bools[ rnd.Next( 9 ) ]; table.Rows.Add( row ); } private void Button2_Click( object sender, System.Windows.RoutedEventArgs e ) { if( RadGridView1.CurrentItem != null ) { table.Rows.Remove( table.Rows[ RadGridView1.Items.IndexOf( RadGridView1.CurrentItem ) ] ); } else { MessageBox.Show( "Please select a row to be deleted before pressing delete" ); } } }}I'm looking at the differences in your DataTable and what the differences are in ours. I think ours has a different structure which is why it doesn't work as well.
Clinton
0
Clinton
Top achievements
Rank 1
answered on 01 Feb 2012, 03:25 AM
Hi Vlad,
I have the implementation working correctly, thanks for your project it helped a lot.
Clinton
I have the implementation working correctly, thanks for your project it helped a lot.
Clinton
