i am displaying two columns in the grid view and their visibilities
(i.e. IsVisible Property) are controlled by corresponding check boxes.
Also i have applied a count function in first column to show the total number of rows in the column footer
. so first time when
i run the application it showing all the columns successfully but if i
do Isvisible property of first column to false and then load the
gridview with new data it shows an error in the handler of the
INotifyPropertyCanhged Interface.
And the error is: "Object reference not set to an instance of an object."
please help me out.,....
public partial class PlaybackView : UserControl, INotifyPropertyChanged { int _count = 0; public PlaybackView() { InitializeComponent(); } #region Properties public DataTable PlaybackTable { get { return (DataTable)GetValue(PlaybackTableProperty); } set { SetValue(PlaybackTableProperty, value); } } // Using a DependencyProperty as the backing store for DataTable. This enables animation, styling, binding, etc... public static readonly DependencyProperty PlaybackTableProperty = DependencyProperty.Register("PlaybackTable", typeof(DataTable), typeof(PlaybackView)); //private static void OnPresentableTableChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) //{ // PlaybackView playbackView = d as PlaybackView; // if (playbackView != null) // { // playbackView.PlaybackLogView = new ListCollectionView(playbackView.PlaybackTable.DefaultView); // } //} public List<string> GroupBy { get { return (List<string>)GetValue(GroupByTextProperty); } set { SetValue(GroupByTextProperty, value); } } public static readonly DependencyProperty GroupByTextProperty = DependencyProperty.Register("GroupBy", typeof(List<string>), typeof(PlaybackView), new UIPropertyMetadata(null, OnGroupByPropertyChanged)); private static void OnGroupByPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { //PlaybackView playbackView = d as PlaybackView; //if (playbackView != null) //{ // playbackView.PlaybackLogView.GroupDescriptions.Add(new PropertyGroupDescription(playbackView.GroupBy)); //} } #endregion #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string name) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(name)); } } #endregion private void telrikDataGrid_DataLoading(object sender, Telerik.Windows.Controls.GridView.GridViewDataLoadingEventArgs e) { if (GroupBy.Count > 0) { if (_count > 0) { this.telrikDataGrid.GroupDescriptors.Clear(); } ColumnGroupDescriptor descriptor = new ColumnGroupDescriptor(); descriptor.Column = this.telrikDataGrid.Columns[GroupBy[0]]; this.telrikDataGrid.GroupDescriptors.Add(descriptor); ++_count; } } } -------------------------------------------XAMl Code---------------------------------------------- <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Button Content="Load Data" HorizontalAlignment="Right" Click="Button_Click" /> <CheckBox x:Name="_check" Grid.Row="1" Content="Visibility" IsChecked="True"/> <telerik:RadGridView Grid.Row="2" x:Name="_telerikGrid" ShowColumnFooters="True" AutoGenerateColumns="False" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=Table}"> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn Header="PresentationName" DataMemberBinding="{Binding PresentationName}"> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="LogLevel" DataMemberBinding="{Binding LogLevel}" IsVisible="{Binding ElementName=_check, Path=IsChecked}"> <telerik:GridViewDataColumn.AggregateFunctions> <telerik:CountFunction Caption="Total Rows"/> </telerik:GridViewDataColumn.AggregateFunctions> </telerik:GridViewDataColumn> </telerik:RadGridView.Columns> </telerik:RadGridView> </Grid>And the error is: "Object reference not set to an instance of an object."
please help me out.,....