Anton Khramov
Top achievements
Rank 1
Anton Khramov
asked on 16 Sep 2008, 01:23 PM
Hi all.
I want to determine if Row or Cell in sight.
I checked IsVisible field of RowGridView but it always true. IsVisible
property of GridViewCell is true at first. After i had moved it out of visible area
it became false. After that it was alway false even if row was in visible are of
grid.
Regards, Anton.
I want to determine if Row or Cell in sight.
I checked IsVisible field of RowGridView but it always true. IsVisible
property of GridViewCell is true at first. After i had moved it out of visible area
it became false. After that it was alway false even if row was in visible are of
grid.
Regards, Anton.
7 Answers, 1 is accepted
0
Hello Anton Khramov,
Currently we do not have a common API to determine whether a GridViewRow is visible or not.
Could you, please elaborate on how to reproduce your scenario? I would suggest you take a look at BringDataItemIntoView method of the RadGridView control:
Using this method you can be sure that your GridViewRow is in sight.
Hope this helps.
Regards,
Atanas
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Currently we do not have a common API to determine whether a GridViewRow is visible or not.
Could you, please elaborate on how to reproduce your scenario? I would suggest you take a look at BringDataItemIntoView method of the RadGridView control:
this.radGridView.BringDataItemIntoView(dataRows[0]); |
Using this method you can be sure that your GridViewRow is in sight.
Hope this helps.
Regards,
Atanas
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
0
Anton Khramov
Top achievements
Rank 1
answered on 19 Sep 2008, 08:55 AM
Hi, Atanas.
Thank you for replay.
I,m using this method to bring a row in view. And I don't want to exesute it when row already in view.
For exemple, i need to bring GridViewCell cell; into view using followed code:
So, I have the trouble described above.
Regards,
Anton.
Thank you for replay.
I,m using this method to bring a row in view. And I don't want to exesute it when row already in view.
For exemple, i need to bring GridViewCell cell; into view using followed code:
private void radGridView_SelectionChanged(object sender, SelectionChangeEventArgs e) |
{ |
if (PageIsValid) |
{ |
CurrentItem = radGridView.CurrentItem; |
} |
} |
private void radGridView_MouseDown(object sender, MouseButtonEventArgs e) |
{ |
if (!cell.IsVisible && !PageIsValid) |
{ |
radGridView.BringDataItemIntoView(CurrentItem); |
} |
} |
So, I have the trouble described above.
Regards,
Anton.
0
Hello Anton Khramov,
Since our RadGridView has no API to determine whether an Item is in the ViewPort or not, I have prepared a small external method which could check this for you . You may put this method in your class. It will search over the visible items and check if the given one is in sight. You need to pass the RadGridView and the Item as parameters.
Kind regards,
Pavel Pavlov
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Since our RadGridView has no API to determine whether an Item is in the ViewPort or not, I have prepared a small external method which could check this for you . You may put this method in your class. It will search over the visible items and check if the given one is in sight. You need to pass the RadGridView and the Item as parameters.
private static bool IsItemInViewPort(RadGridView gridView, object item) |
{ |
GridViewItemsControl gridViewItemsControl = (GridViewItemsControl)gridView.Template.FindName("PART_RootItemsControl", gridView); |
ScrollViewer scrollviewer = (ScrollViewer)gridViewItemsControl.Template.FindName("PART_ItemsScrollViewer", gridViewItemsControl); |
ScrollContentPresenter scrollcontentpresenter = (ScrollContentPresenter)scrollviewer.Template.FindName("PART_ScrollContentPresenter", scrollviewer); |
GridViewVirtualizingPanel panel = (GridViewVirtualizingPanel)VisualTreeHelper.GetChild((DependencyObject)scrollcontentpresenter.Content, 0); |
double itemVerticalOffset = 0; |
int rowIndex = 0; |
while (itemVerticalOffset < panel.ActualHeight && rowIndex < panel.Children.Count) |
{ |
GridViewRow rowToCheck = (GridViewRow) VisualTreeHelper.GetChild(panel, rowIndex); |
if (((DataRecord)rowToCheck.Record).Data == item) |
return true; |
rowIndex++; |
itemVerticalOffset += rowToCheck.ActualHeight; |
} |
return false; |
} |
Kind regards,
Pavel Pavlov
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
0
Greg
Top achievements
Rank 1
answered on 23 Feb 2009, 02:46 PM
Hi All,
Tried to use fragment of code:
GridViewItemsControl gridViewItemsControl = (GridViewItemsControl)this.radGridView1.Template.FindName("PART_RootItemsControl", this.radGridView1);
ScrollViewer sv = (ScrollViewer)gridViewItemsControl.Template.FindName("PART_ItemsScrollViewer", gridViewItemsControl);
But it throws:
Unable to cast object of type 'Telerik.Windows.Controls.GridView.GridViewScrollViewer' to type 'System.Windows.Controls.ScrollViewer'.
Maybe I'm doing something wrong! I'm using RadControls_for_WPF_2008_3_1217_TRIAL.msi
Grego
Tried to use fragment of code:
GridViewItemsControl gridViewItemsControl = (GridViewItemsControl)this.radGridView1.Template.FindName("PART_RootItemsControl", this.radGridView1);
ScrollViewer sv = (ScrollViewer)gridViewItemsControl.Template.FindName("PART_ItemsScrollViewer", gridViewItemsControl);
But it throws:
Unable to cast object of type 'Telerik.Windows.Controls.GridView.GridViewScrollViewer' to type 'System.Windows.Controls.ScrollViewer'.
Maybe I'm doing something wrong! I'm using RadControls_for_WPF_2008_3_1217_TRIAL.msi
Grego
0
Hi g,
The latest official version of RadGridView replaced the ScrollViewer controls with custom GridViewScrollViewer controls, hence the error. The code examples below seem to be obsolete. I would suggest changing the ScrollViewer in the following line to GridViewScrollViewer:
ScrollViewer sv = (ScrollViewer)gridViewItemsControl.Template.FindName("PART_ItemsScrollViewer", gridViewItemsControl);
GridViewScrollViewer sv = (GridViewScrollViewer)gridViewItemsControl.Template.FindName("PART_ItemsScrollViewer", gridViewItemsControl);
All the best,
Valeri Hristov
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
The latest official version of RadGridView replaced the ScrollViewer controls with custom GridViewScrollViewer controls, hence the error. The code examples below seem to be obsolete. I would suggest changing the ScrollViewer in the following line to GridViewScrollViewer:
ScrollViewer sv = (ScrollViewer)gridViewItemsControl.Template.FindName("PART_ItemsScrollViewer", gridViewItemsControl);
GridViewScrollViewer sv = (GridViewScrollViewer)gridViewItemsControl.Template.FindName("PART_ItemsScrollViewer", gridViewItemsControl);
All the best,
Valeri Hristov
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
0
Greg
Top achievements
Rank 1
answered on 24 Feb 2009, 11:41 AM
Hi Valeri,
I would like to achieve the following functionality: Press button and scroll automatically one page or line.
I already try GridViewScrollViewer,but using this object I cannot find way to:
- get VerticalOffset
- invoke PageDown
- invoke LineDown
These members are available in standard ScrollViewer.
So GridViewScrollViewer doesn't give me what I need. Could you suggest me other solution?
Thanks in advance!
Grego
I would like to achieve the following functionality: Press button and scroll automatically one page or line.
I already try GridViewScrollViewer,but using this object I cannot find way to:
- get VerticalOffset
- invoke PageDown
- invoke LineDown
These members are available in standard ScrollViewer.
So GridViewScrollViewer doesn't give me what I need. Could you suggest me other solution?
Thanks in advance!
Grego
0
Hello Grego,
I found a simple application that demonstrates how to implement custom scrolling. Please, find it attached and let me know if it does not work for you.
Best wishes,
Valeri Hristov
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
I found a simple application that demonstrates how to implement custom scrolling. Please, find it attached and let me know if it does not work for you.
Best wishes,
Valeri Hristov
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.