Hi,
I'm trying to do a Drag&Drop between 2 differents RadGridViews.
The DragEvent is working properly, but the DropEvent is never triggered.
I'm provably missing something, but I've been reading threads and I couldn't find the problem.
Hope u guys can help me. Thanks in advance.
My code-behind:
Same code for the other GridView.
...Drop event are never triggered.
My xaml:
I've commented the
Thanks once again!
I'm trying to do a Drag&Drop between 2 differents RadGridViews.
The DragEvent is working properly, but the DropEvent is never triggered.
I'm provably missing something, but I've been reading threads and I couldn't find the problem.
Hope u guys can help me. Thanks in advance.
My code-behind:
public
PermisosListView()
{
InitializeComponent();
RadDragAndDropManager.AddDropQueryHandler(PermisosTots, RadGridView_OnDropQuery);
RadDragAndDropManager.AddDropInfoHandler(PermisosTots, RadGridView_OnDropInfo);
RadDragAndDropManager.AddDragQueryHandler(PermisosTots, OnGridViewDragQuery);
RadDragAndDropManager.AddDragInfoHandler(PermisosTots, OnGridViewDragInfo);
RadDragAndDropManager.AddDropQueryHandler(PermisosAsignats, RadGridView_OnDropQuery2);
RadDragAndDropManager.AddDropInfoHandler(PermisosAsignats, RadGridView_OnDropInfo2);
RadDragAndDropManager.AddDragQueryHandler(PermisosAsignats, OnGridViewDragQuery2);
RadDragAndDropManager.AddDragInfoHandler(PermisosAsignats, OnGridViewDragInfo2);
}
#region DragDropEvent handlers 1
//DragQuery event handler
private
void
OnGridViewDragQuery(
object
sender, DragDropQueryEventArgs e)
{
RadGridView gridView = sender
as
RadGridView;
//PermisosListView gridView = (PermisosListView)sender;
if
(gridView !=
null
)
{
e.Options.Payload = gridView.SelectedItem;
//e.Options.Payload = gridView.PermisosTots.CurrentItem;
}
e.QueryResult =
true
;
e.Handled =
true
;
e.Options.ArrowCue = RadDragAndDropManager.GenerateArrowCue();
Permisos p = (Permisos)gridView.SelectedItem;
// MessageBox.Show(p.Permis);
}
//DragInfo event handler
private
void
OnGridViewDragInfo(
object
sender, DragDropEventArgs e)
{
RadGridView gridView = sender
as
RadGridView;
var draggedItem = e.Options.Payload;
if
(e.Options.Status == DragStatus.DragInProgress && draggedItem !=
null
)
{
//Setting up a drag cue:
ContentControl cue =
new
ContentControl();
//Choosing a template for the items:
//cue.ContentTemplate = this.Resources["ProductTemplate"] as DataTemplate;
Permisos p = (Permisos)draggedItem;
cue.Content = p.Permis;
e.Options.DragCue = cue;
}
else
if
(e.Options.Status == DragStatus.DragComplete)
{
//deleting the dragged item from the RadGridView
//IList source = gridView.ItemsSource as IList;
//source.Remove(draggedItem);
}
}
//DropQuery event handler
private
void
RadGridView_OnDropQuery(
object
sender, DragDropQueryEventArgs e)
{
var destination = sender
as
RadGridView;
if
(destination !=
null
)
{
e.Handled =
true
;
e.QueryResult =
true
;
}
}
//DropInfo event handler
private
void
RadGridView_OnDropInfo(
object
sender, DragDropEventArgs e)
{
RadGridView destination = sender
as
RadGridView;
if
(e.Options.Status == DragStatus.DropComplete)
{
GridViewCell destCell = e.Options.Destination
as
GridViewCell;
if
(destCell !=
null
)
{
var ID = destCell.Column.Header;
}
//(destination.ItemsSource as IList<ProductViewModel>).Add(e.Options.Payload as ProductViewModel);
}
}
#endregion
Same code for the other GridView.
...Drop event are never triggered.
My xaml:
<
Control.Resources
>
<
Style
TargetType
=
"ListBoxItem"
x:Key
=
"draggableItemStyle"
>
<
Setter
Property
=
"HorizontalAlignment"
Value
=
"Stretch"
/>
<
Setter
Property
=
"HorizontalContentAlignment"
Value
=
"Stretch"
/>
<
Setter
Property
=
"Foreground"
Value
=
"#000000"
/>
<
Setter
Property
=
"telerik:RadDragAndDropManager.AllowDrag"
Value
=
"True"
/>
<
Setter
Property
=
"telerik:RadDragAndDropManager.AllowDrop"
Value
=
"True"
/>
</
Style
>
</
Control.Resources
>
<
Grid
>
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
Width
=
"*"
/>
<
ColumnDefinition
Width
=
"30"
/>
<
ColumnDefinition
Width
=
"*"
/>
</
Grid.ColumnDefinitions
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"*"
/>
<
RowDefinition
Height
=
"Auto"
/>
</
Grid.RowDefinitions
>
<
sdk:Label
Content
=
"Permisos Asignats"
Grid.Column
=
"0"
Grid.Row
=
"0"
HorizontalAlignment
=
"Center"
FontWeight
=
"Bold"
/>
<
sdk:Label
Content
=
"Tots els permisos"
Grid.Column
=
"2"
Grid.Row
=
"0"
HorizontalAlignment
=
"Center"
FontWeight
=
"Bold"
/>
<
Controls1:RadButton
Command
=
"{Binding AddPermisoCommand}"
Height
=
"30"
Width
=
"30"
Grid.Column
=
"1"
Grid.Row
=
"1"
Margin
=
"0,78,0,148"
Content
=
"<"
FontWeight
=
"Bold"
/>
<
Controls1:RadButton
Command
=
"{Binding RemovePermisoCommand}"
Height
=
"30"
Width
=
"30"
Grid.Column
=
"1"
Grid.Row
=
"1"
Margin
=
"0,149,0,77"
Content=">" FontWeight="Bold" />
<
telerikQuickStart:HeaderedContentControl
Header
=
"Permisos Asignats"
Name
=
"Asignats"
HorizontalContentAlignment
=
"Stretch"
VerticalContentAlignment
=
"Stretch"
Grid.Column
=
"0"
Grid.Row
=
"1"
Drop
=
"Asignats_Drop"
>
<
Controls2:RadGridView
x:Name
=
"PermisosAsignats"
ItemsSource
=
"{Binding CurrentGrup.Permisos}"
Grid.Row
=
"1"
Grid.Column
=
"0"
SelectedItem="{Binding
Mode
=
TwoWay
,
BindsDirectlyToSource
=
True
,
Path
=
CurrentPermis
,
ValidatesOnNotifyDataErrors
=
False
}"
RowIndicatorVisibility
=
"Collapsed"
telerik:RadDragAndDropManager.AllowDrop
=
"True"
telerik:RadDragAndDropManager.AllowDrag
=
"True"
ItemContainerStyle
=
"{StaticResource draggableItemStyle}"
AutoGenerateColumns
=
"False"
VerticalAlignment
=
"Stretch"
CanUserFreezeColumns
=
"True"
BorderThickness
=
"0"
CanUserResizeColumns
=
"False"
ShowGroupPanel
=
"True"
Margin
=
"0,0,0,1"
Width
=
"Auto"
ShowGroupFooters
=
"True"
ShowInsertRow
=
"False"
ShowColumnFooters
=
"False"
AlternateRowBackground
=
"#FFF9F193"
AlternationCount
=
"2"
IsReadOnly
=
"True"
IsFilteringAllowed
=
"True"
CanUserDeleteRows
=
"False"
CanUserInsertRows
=
"False"
AllowDrop
=
"True"
Drop
=
"PermisosAsignats_Drop"
>
<
Controls2:RadGridView.Columns
>
<
Controls2:GridViewDataColumn
DataMemberBinding
=
"{Binding Permis}"
IsResizable
=
"True"
Header
=
"Permis"
/>
<!--<Controls2:GridViewDataColumn DataMemberBinding="{Binding Command}" IsResizable="True" Header="Command" />-->
</
Controls2:RadGridView.Columns
>
<
Controls2:RadGridView.GroupDescriptors
>
<
data:GroupDescriptor
Member
=
"AgrupacioPermisos.Descripcio"
DisplayContent
=
"Grupo de permisos"
/>
</
Controls2:RadGridView.GroupDescriptors
>
<
i:Interaction.Triggers
>
<!--<
i:EventTrigger
EventName
=
"Drop"
>
<
ei:CallMethodAction
MethodName
=
"Drop"
TargetObject
=
"{Binding ElementName=PermisosAsignats, Path=DataContext}"
/>
</
i:EventTrigger
>-->
</
i:Interaction.Triggers
>
</
Controls2:RadGridView
>
</
telerikQuickStart:HeaderedContentControl
>
<
Controls:RadDataPager
Grid.Row
=
"2"
Grid.Column
=
"0"
PageSize
=
"{Binding PagerPageSize, Mode=TwoWay}"
Source
=
"{Binding Items, ElementName=PermisosAsignats}"
DisplayMode
=
"All"
AutoEllipsisMode
=
"Both"
NumericButtonCount
=
"10"
IsTotalItemCountFixed
=
"True"
/>
<
telerikQuickStart:HeaderedContentControl
Header
=
"Tots els permisos"
Name
=
"Tots"
HorizontalContentAlignment
=
"Stretch"
VerticalContentAlignment
=
"Stretch"
Grid.Column
=
"2"
Grid.Row
=
"1"
Drop
=
"Tots_Drop"
>
<
Controls2:RadGridView
x:Name
=
"PermisosTots"
ItemsSource
=
"{Binding PermisosNoAsignats}"
Grid.Row
=
"1"
Grid.Column
=
"2"
SelectedItem="{Binding
Mode
=
TwoWay
,
BindsDirectlyToSource
=
True
,
Path
=
CurrentItem
,
ValidatesOnNotifyDataErrors
=
False
}"
RowIndicatorVisibility
=
"Collapsed"
telerik:RadDragAndDropManager.AllowDrop
=
"True"
telerik:RadDragAndDropManager.AllowDrag
=
"True"
AutoGenerateColumns
=
"False"
VerticalAlignment
=
"Stretch"
CanUserFreezeColumns
=
"True"
BorderThickness
=
"0"
CanUserResizeColumns
=
"False"
ShowGroupPanel
=
"True"
Margin
=
"0,0,0,1"
Width
=
"Auto"
ShowGroupFooters
=
"True"
ShowInsertRow
=
"False"
ShowColumnFooters
=
"False"
AlternateRowBackground
=
"#FFF9F193"
AlternationCount
=
"2"
IsReadOnly
=
"True"
IsFilteringAllowed
=
"True"
CanUserDeleteRows
=
"False"
CanUserInsertRows
=
"False"
AutoExpandGroups
=
"True"
AllowDrop
=
"True"
Drop
=
"PermisosTots_Drop"
>
<
Controls2:RadGridView.Columns
>
<
Controls2:GridViewDataColumn
DataMemberBinding
=
"{Binding Permis}"
IsResizable
=
"True"
Header
=
"Permis"
/>
</
Controls2:RadGridView.Columns
>
<
Controls2:RadGridView.GroupDescriptors
>
<
data:GroupDescriptor
Member
=
"AgrupacioPermisos.Descripcio"
DisplayContent
=
"Grupo de permisos"
/>
</
Controls2:RadGridView.GroupDescriptors
>
<
i:Interaction.Triggers
>
<
i:EventTrigger
EventName
=
"RowActivated"
>
<
ei:CallMethodAction
MethodName
=
"Sel"
TargetObject
=
"{Binding ElementName=PermisosTots, Path=DataContext}"
/>
</
i:EventTrigger
>
<
i:EventTrigger
EventName
=
"Filtered"
>
<
i:InvokeCommandAction
Command
=
"{Binding FilterCommand}"
CommandParameter
=
"{Binding ElementName=PermisosTots, Path=FilterDescriptors}"
/>
</
i:EventTrigger
>
<!--<
i:EventTrigger
EventName
=
"Drop"
>
<
i:InvokeCommandAction
Command
=
"{Binding DropCommand}"
CommandParameter
=
"{Binding ElementName=PermisosTots, Path=FilterDescriptors}"
/>
</
i:EventTrigger
>-->
</
i:Interaction.Triggers
>
</
Controls2:RadGridView
>
</
telerikQuickStart:HeaderedContentControl
>
<
Controls:RadDataPager
Grid.Row
=
"2"
Grid.Column
=
"2"
PageSize
=
"{Binding PagerPageSize, Mode=TwoWay}"
Source
=
"{Binding Items, ElementName=PermisosTots}"
DisplayMode
=
"All"
AutoEllipsisMode
=
"Both"
NumericButtonCount
=
"10"
IsTotalItemCountFixed
=
"True"
PageIndex
=
"{Binding CurrentPage, Mode=TwoWay}"
/>
I've commented the
<
i:EventTrigger
EventName
=
"Drop"
> to try the Drop event using the codebehind and not using the ViewModel.
Thanks once again!