Frederic Gos
Top achievements
Rank 1
Frederic Gos
asked on 01 Mar 2010, 03:45 PM
Hi,
I have a RadGridView with CanUserSelect="True". I define my columns manually using nested GridViewDataColumn. Each column is bound to some property of some object. The properties only have a 'get' method. When i run my app, I cannot select the content of the cells (for copy operation). I noticed that if i change the properties of the underlying objects and add an empty setter, I get to edit.
How can I do the same things without having to change my properties? I want to be able to have readonly data that I CAN select. Is there a way to tell the columns or the whole grid that they should be selectable? (I thought btw that 'CanUserSelect' should take care of that?)
brgds
Frederic
I have a RadGridView with CanUserSelect="True". I define my columns manually using nested GridViewDataColumn. Each column is bound to some property of some object. The properties only have a 'get' method. When i run my app, I cannot select the content of the cells (for copy operation). I noticed that if i change the properties of the underlying objects and add an empty setter, I get to edit.
How can I do the same things without having to change my properties? I want to be able to have readonly data that I CAN select. Is there a way to tell the columns or the whole grid that they should be selectable? (I thought btw that 'CanUserSelect' should take care of that?)
brgds
Frederic
7 Answers, 1 is accepted
0
Hello Frederic,
By default RadGridView will set each column to read-only when the underlying property is read-only. However this did not prevent you from selecting a specific row and do copy paste operation.
If your desired behavior is to have copy paste like in edit mode, but without entering into edit, my suggestion is to create custom CellTemplate for each column that has read-only TextBox. Here is a sample XAML snippet:
Regards,
Stefan Dobrev
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
By default RadGridView will set each column to read-only when the underlying property is read-only. However this did not prevent you from selecting a specific row and do copy paste operation.
If your desired behavior is to have copy paste like in edit mode, but without entering into edit, my suggestion is to create custom CellTemplate for each column that has read-only TextBox. Here is a sample XAML snippet:
<
telerik:GridViewDataColumn
Header
=
"MyProperty"
DataMemberBinding
=
"{Binding MyProperty}"
>
<
telerik:GridViewDataColumn.CellTemplate
>
<
DataTemplate
>
<
TextBox
Text
=
"{Binding MyProperty}"
IsReadOnly
=
"True"
core:StyleManager.Theme
=
"Office_Black"
/>
</
DataTemplate
>
</
telerik:GridViewDataColumn.CellTemplate
>
</
telerik:GridViewDataColumn
>
Regards,
Stefan Dobrev
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
0
Rudis
Top achievements
Rank 1
answered on 22 Sep 2010, 07:30 AM
Hello!
A problem I have with this solution is that the row doesn´t get selected when clicking on the readonly text. I have to hit an area outside the TextBox. Do we have a catch 22 here? Is it because the TextBox is readonly?
/Anna
A problem I have with this solution is that the row doesn´t get selected when clicking on the readonly text. I have to hit an area outside the TextBox. Do we have a catch 22 here? Is it because the TextBox is readonly?
/Anna
0
Hi Anna Rudlund,
Regards,
Milan
the Telerik team
This is actually caused by the TextBox itself - mouse events do not reach the grid since they are handled by the TextBox control. One possible workaround is to manually handle mouse events and select the corresponding rows.
public
MainWindow()
{
InitializeComponent();
this
.AddHandler(FrameworkElement.MouseLeftButtonDownEvent,
new
MouseButtonEventHandler(OnMouseDown),
true
);
}
private
void
OnMouseDown(
object
sender, MouseButtonEventArgs e)
{
var senderElement = e.OriginalSource
as
FrameworkElement;
var row = senderElement.ParentOfType<GridViewRow>();
if
(row !=
null
)
{
row.IsSelected =
true
;
}
}
Regards,
Milan
the Telerik team
Do you want to have your say when we set our development plans?
Do you want to know when a feature you care about is added or when a bug fixed?
Explore the
Telerik Public Issue Tracking
system and vote to affect the priority of the items
0
Rudis
Top achievements
Rank 1
answered on 28 Sep 2010, 12:59 PM
Thanx!
That solved my problem.
Best regards,
Anna
That solved my problem.
Best regards,
Anna
0
Rex Walker
Top achievements
Rank 1
answered on 11 Feb 2012, 06:22 PM
Just a quick followup on allowing select/copy operation on a cell.
I have found the use of a CellEditTemplate to be ideal for this type of functionality.
I have found the use of a CellEditTemplate to be ideal for this type of functionality.
<
telerik:GridViewDataColumn
Header
=
"MyProperty"
DataMemberBinding
=
"{Binding MyProperty}"
>
<
telerik:GridViewDataColumn.CellEditTemplate
>
<
DataTemplate
>
<
TextBox
Text
=
"{Binding MyProperty}"
IsReadOnly
=
"True"
BorderThickness
=
"0"
Margin
=
"0"
/>
</
DataTemplate
>
</
telerik:GridViewDataColumn.CellEditTemplate
>
</
telerik:GridViewDataColumn
>
0
Fabio
Top achievements
Rank 1
answered on 13 Nov 2014, 03:29 PM
Great: just what I was looking for!
Thank you, Rex Walker.
Thank you, Rex Walker.
0
NA
Top achievements
Rank 1
answered on 28 Sep 2016, 01:13 AM
Hi Rex,
I'm having the same requirement, so I come across this post. I tried your solution, but the only issue is:
In order to select the content, I have do the single click TWICE: the 1st click will enter the edit mode and place the cursor inside the textbox, and I have to do a 2nd click to select the content, which is not that intuitive. (If after the 1st click and I move the mouse without releasing the button, it performs a drag action. Yes, my app will allow drag & drop.)
What I want to achieve: When mouse over the text field, the cursor turns to IBeam, so the user can directly select the contect with only one click. If this is too hard to achieve, alternatively I can do, when the user click on text field, all the text are selected.
Do you have any idea about how I achieve this please? Thanks!
I'm having the same requirement, so I come across this post. I tried your solution, but the only issue is:
In order to select the content, I have do the single click TWICE: the 1st click will enter the edit mode and place the cursor inside the textbox, and I have to do a 2nd click to select the content, which is not that intuitive. (If after the 1st click and I move the mouse without releasing the button, it performs a drag action. Yes, my app will allow drag & drop.)
What I want to achieve: When mouse over the text field, the cursor turns to IBeam, so the user can directly select the contect with only one click. If this is too hard to achieve, alternatively I can do, when the user click on text field, all the text are selected.
Do you have any idea about how I achieve this please? Thanks!