Drag and Drop RedGridview to RedGridView using DomainDataSource

6 posts, 0 answers
  1. Shakti SIngh Dulawat
    Shakti SIngh Dulawat avatar
    89 posts
    Member since:
    Oct 2009

    Posted 19 Apr 2011 Link to this post

    Hi telerik ,
    I have one strange problem I am trying to drop grid view data in another grid view , first of all I did not find any suitable example where you bound grid with RIA domain data source and we can check it.
    Right now what happening with me I was not able to refresh second grid after drop , or you can say this line of code is not working for me
       xxTable1DataSource.Clear();

    xxTable1DataSource.Load();

     

    I really appreciate if you can help me about drag and drop using wcf ria datasource , please find the example code here I used.

     

    Thanks,
    Shakti

    <telerik:RadWindow
                 xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
                 xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices" xmlns:my="clr-namespace:SilverFinancials.Web.Models" xmlns:my1="clr-namespace:SilverFinancials.Web.Services" xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" x:Class="SilverFinancials.Windows.DragExample"
        mc:Ignorable="d"
                 Closed="RadWindow_Closed"
                       Header="Drag Example" Width="787" Height="385"
        d:DesignHeight="287" d:DesignWidth="400">
     
        <Grid x:Name="LayoutRoot" Background="Gainsboro">
            <Grid.RowDefinitions>
                <RowDefinition Height="0.9*"/>
                <RowDefinition Height="0.1*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0.446*"/>
                <ColumnDefinition Width="0.554*"/>
            </Grid.ColumnDefinitions>
            <riaControls:DomainDataSource AutoLoad="True" Height="0" LoadingData="billTypeDomainDataSource_LoadingData" LoadedData="billTypeDomainDataSource_LoadedData" x:Name="xxTable1DataSource" QueryName="GetXxTable1Query" Width="0" Grid.Column="1" Margin="10,10,10,10"  >
                <riaControls:DomainDataSource.DomainContext>
                    <my1:xxTable1 />
                </riaControls:DomainDataSource.DomainContext>
            </riaControls:DomainDataSource>
            <riaControls:DomainDataSource AutoLoad="True" Height="0" LoadingData="billTypeDomainDataSource_LoadingData" LoadedData="billTypeDomainDataSource_LoadedData" x:Name="xxTable2DataSource" QueryName="GetXxTable2Query" Width="0" Grid.Column="1" Margin="10,10,10,10"  >
                <riaControls:DomainDataSource.DomainContext>
                    <my1:xxTable2 />
                </riaControls:DomainDataSource.DomainContext>
            </riaControls:DomainDataSource>
     
            <telerik:RadGridView x:Name="billTypeRadGridView"  ItemsSource="{Binding Data, ElementName=xxTable1DataSource}"  AutoGenerateColumns="False"
                                             Background="Gainsboro"                                              
                                  CanUserDeleteRows="False" CanUserInsertRows="True"
                                 Height="200"
                                    
                                   IsSynchronizedWithCurrentItem="false"
                                 CanUserFreezeColumns="False"  CanUserReorderColumns="False"  ShowGroupPanel="False"   Grid.Row="0" Grid.Column="0"  IsReadOnly="True"
                        telerik:RadDragAndDropManager.AllowDrop="True" SelectionMode="Extended">
     
                <telerik:RadGridView.RowStyle>
                    <Style TargetType="telerik:GridViewRow">
                        <Setter Property="telerik:RadDragAndDropManager.AllowDrag" Value="True" />
                    </Style>
                </telerik:RadGridView.RowStyle>
                <telerik:RadGridView.Columns>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Description}" Header="Description"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Amount}" Header="Amount"  IsReadOnly="True" />
                </telerik:RadGridView.Columns>
            </telerik:RadGridView>
     
     
     
            <telerik:RadGridView x:Name="billTypeRadGridViewDrop"  ItemsSource="{Binding Data, ElementName=xxTable2DataSource}"  AutoGenerateColumns="False"
                                             Background="Gainsboro"                                              
                                  CanUserDeleteRows="False" CanUserInsertRows="True"
                                 Height="200"
                                    
                                   IsSynchronizedWithCurrentItem="false"
                               CanUserFreezeColumns="False"  CanUserReorderColumns="False"  ShowGroupPanel="False"    Grid.Row="0" Grid.Column="1" IsReadOnly="True"
                        telerik:RadDragAndDropManager.AllowDrop="True"  SelectionMode="Extended"
    >
                <telerik:RadGridView.RowStyle>
                    <Style TargetType="telerik:GridViewRow">
                        <Setter Property="telerik:RadDragAndDropManager.AllowDrag" Value="True" />
                    </Style>
                </telerik:RadGridView.RowStyle>
                <telerik:RadGridView.Columns>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Description}" Header="Description"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Amount}" Header="Amount" IsReadOnly="True" />
                </telerik:RadGridView.Columns>
            </telerik:RadGridView>
     
     
     
     
            <telerik:RadButton Content="Save" HorizontalAlignment="Right" Click="saveRBTN_Click" Height="23" x:Name="saveRBTN" Width="75"  Grid.Row="1" Grid.Column="1" />
            <telerik:RadButton Content="Canel" HorizontalAlignment="Right" Height="23" x:Name="cancelRBTN" Click="cancelRBTN_Click" Width="75" Grid.Row="1" Grid.Column="1" />
     
     
        </Grid>
    </telerik:RadWindow>

    using System.Windows;
    using System.Windows.Controls;
    using Telerik.Windows.Controls;
    using Telerik.Windows.Controls.DragDrop;
    using System.ServiceModel.DomainServices.Client;
    using System;
    using Telerik.Windows.Controls.GridView;
    using System.Collections.Generic;
    using System.Collections;
    using System.Collections.ObjectModel;
    using System.Linq;
    using Telerik.Windows.Controls.TreeView;
    using System.Windows.Media;
    using SilverFinancials.Web.Models;
     
    namespace SilverFinancials.Windows
    {
        public partial class DragExample : RadWindow
        {
            #region private member
            private bool hasConcurrencyIssue = false;
            #endregion
     
     
            #region Constructor
            public DragExample()
            {
                try
                {
                    InitializeComponent();
                    //xxTable2DataSource.DomainContext.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(DomainContext_PropertyChanged);
                }
                catch (Exception ex)
                {
                    RadWindow.Alert("Screen timed out. Please open again!");
                }
                //MyBusinessObjects businessObjectGenerator = new MyBusinessObjects();
     
                //SilverFinancials.Web.Services.xxTable1 x = new SilverFinancials.Web.Services.xxTable1();
                //EntityQuery<SilverFinancials.Web.Models.xxTable1> xx = x.GetXxTable1Query();
                //foreach (SilverFinancials.Web.Models.xxTable1 sd in x.GetXxTable1Query())
                //{
     
                //}
     
     
                RadDragAndDropManager.AddDropQueryHandler(billTypeRadGridView, OnDropQuery);
                RadDragAndDropManager.AddDropInfoHandler(billTypeRadGridView, OnDropInfoxxTable2);
                RadDragAndDropManager.AddDragQueryHandler(billTypeRadGridView, OnDragQuery);
                RadDragAndDropManager.AddDragInfoHandler(billTypeRadGridView, OnDragInfoxxTable1);
     
                RadDragAndDropManager.AddDropQueryHandler(billTypeRadGridViewDrop, OnDropQuery);
                RadDragAndDropManager.AddDropInfoHandler(billTypeRadGridViewDrop, OnDropInfoxxTable1);
                RadDragAndDropManager.AddDragQueryHandler(billTypeRadGridViewDrop, OnDragQuery);
                RadDragAndDropManager.AddDragInfoHandler(billTypeRadGridViewDrop, OnDragInfoxxTable2);
            }
     
            private void DomainContext_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
            {
                //saveRBTN.IsEnabled = billTypeDomainDataSource.DomainContext.HasChanges;
                //cancelRBTN.IsEnabled = billTypeDomainDataSource.DomainContext.HasChanges;
                //xxTable2DataSource.Clear();
                //xxTable2DataSource.Load();
     
            }
            #endregion
     
     
            #region Load event handler for the domain data source
            private void billTypeDomainDataSource_LoadedData(object sender, LoadedDataEventArgs e)
            {
     
                if (e.HasError)
                {
                    System.Windows.MessageBox.Show(e.Error.ToString(), "Load Error", System.Windows.MessageBoxButton.OK);
                    e.MarkErrorAsHandled();
                }
            }
     
            private void billTypeDomainDataSource_LoadingData(object sender, LoadingDataEventArgs e)
            {
                e.LoadBehavior = System.ServiceModel.DomainServices.Client.LoadBehavior.RefreshCurrent;
            }
            #endregion
     
            #region Save/Cancel button event handlers
            private void saveRBTN_Click(object sender, RoutedEventArgs e)
            {
                //saveRBTN.IsEnabled = false;
                //billTypeRadGridView.CommitEdit();
                //billTypeDomainDataSource.DomainContext.SubmitChanges(OnSubmitCompleted, null);
            }
            private void cancelRBTN_Click(object sender, RoutedEventArgs e)
            {
                xxTable1DataSource.DomainContext.RejectChanges();
                xxTable2DataSource.DomainContext.RejectChanges();
     
            }
     
            ////////// Handle Update Concurrency///////////////////
     
            private void OnSubmitCompleted(SubmitOperation so)
            {
                //saveRBTN.IsEnabled = true;
                if (so.HasError)
                {
     
                    hasConcurrencyIssue = false;
     
                    foreach (Entity entity in so.EntitiesInError)
                    {
                        //Process entity conflict concurrency
                        if (entity.EntityConflict != null)
                        {
                            hasConcurrencyIssue = true;
                            RadWindow.Alert("An update concurrency issue occurs.", closed);
                            break;
     
                        }
                    }
                    so.MarkErrorAsHandled();
                    if (!hasConcurrencyIssue)
                    {
                        MessageBox.Show("Save failed.");
                    }
     
                }
                else
                {
                    MessageBox.Show("Save successfully.");
                }
     
     
     
            }
     
            private void closed(object sender, WindowClosedEventArgs e)
            {
                xxTable1DataSource.Clear();
                xxTable1DataSource.Load();
                xxTable2DataSource.Clear();
                xxTable2DataSource.Load();
     
            }
            #endregion
     
            #region Save closing feature
            private void RadWindow_Closed(object sender, WindowClosedEventArgs e)
            {
     
            }
            #endregion
     
            // OnDragQuery event handler
            private void OnDragQuery(object sender, DragDropQueryEventArgs e)
            {
                RadGridView gridView = sender as RadGridView;
                if (gridView != null)
                {
                    e.Options.Payload = gridView.SelectedItem;
                }
                e.QueryResult = true;
                e.Handled = true;
     
            }
            // OnDragInfo event handler
            private void OnDragInfoxxTable1(object sender, DragDropEventArgs e)
            {
                RadGridView gridView = sender as RadGridView;
                xxTable1 draggedItem = e.Options.Payload as xxTable1;
     
                if (e.Options.Status == DragStatus.DragInProgress)
                {
                    //Setting up a drag cue:
                    ContentControl cue = new ContentControl();
                    //Choosing a template for the items:
                    //cue.ContentTemplate = this.Resources["ProductTemplate"] as DataTemplate;
                    cue.Content = draggedItem;
                    e.Options.DragCue = cue;
     
                }
                else if (e.Options.Status == DragStatus.DragComplete)
                {
                    //deleting the dragged item from the RadGridView
                    IList<xxTable1> source = gridView.ItemsSource as IList<xxTable1>;
                    gridView.Items.Remove(draggedItem);
                    //  source.Remove(draggedItem);
                }
     
            }
     
            private void OnDragInfoxxTable2(object sender, DragDropEventArgs e)
            {
                RadGridView gridView = sender as RadGridView;
                xxTable2 draggedItem = e.Options.Payload as xxTable2;
     
                if (e.Options.Status == DragStatus.DragInProgress)
                {
                    //Setting up a drag cue:
                    ContentControl cue = new ContentControl();
                    //Choosing a template for the items:
                    //cue.ContentTemplate = this.Resources["ProductTemplate"] as DataTemplate;
                    cue.Content = draggedItem;
                    e.Options.DragCue = cue;
     
                }
                else if (e.Options.Status == DragStatus.DragComplete)
                {
                    //deleting the dragged item from the RadGridView
                    IList<xxTable2> source = gridView.ItemsSource as IList<xxTable2>;
                    gridView.Items.Remove(draggedItem);
                    //  source.Remove(draggedItem);
                }
     
            }
            // OnDropQuery event handler
            private void OnDropQuery(object sender, DragDropQueryEventArgs e)
            {
     
                RadGridView destination = sender as RadGridView;
     
                if (destination != null)
                {
                    e.Handled = true;
                    e.QueryResult = true;
                }
     
            }
            // OnDropInfo event handler
            private void OnDropInfoxxTable1(object sender, DragDropEventArgs e)
            {
                RadGridView destination = sender as RadGridView;
                xxTable1 draggedItem = e.Options.Payload as xxTable1;
                if (e.Options.Status == DragStatus.DropComplete)
                {
                    xxTable2 x = new xxTable2();
                    x.Description = draggedItem.Description;
                    x.Amount = draggedItem.Amount;
                    (xxTable2DataSource.DomainContext as SilverFinancials.Web.Services.xxTable2).xxTable2s.Add(x);
     
                    //billTypeRadGridViewDrop.ItemsSource= xxTable2DataSource;
                    xxTable2DataSource.DomainContext.SubmitChanges();
                    //xxTable2DataSource.Clear();
                    billTypeRadGridViewDrop.ItemsSource = null;
                   // billTypeRadGridViewDrop.ItemsSource = xxTable2DataSource.DomainContext.Load(SilverFinancials.Web.Services.xxTable2()) ;
                    xxTable2DataSource.Clear();
                    xxTable2DataSource.Load();
                  //  billTypeRadGridViewDrop.ItemsSource = xxTable2DataSource;
                    //   billTypeRadGridViewDrop
                    ////   xxTable2DataSource.DataView.Add(draggedItem);
                    //xxTable2DataSource.DomainContext.
                    // destination.Items.Add(x);
                    //(destination.ItemsSource as IList<xxTable2>).Add(e.Options.Payload as xxTable2);
                }
                ///xxTable2DataSource.Clear();
                //xxTable2DataSource.Load();
            }
     
            private void OnDropInfoxxTable2(object sender, DragDropEventArgs e)
            {
                RadGridView destination = sender as RadGridView;
                xxTable2 draggedItem = e.Options.Payload as xxTable2;
                if (e.Options.Status == DragStatus.DropComplete)
                {
                    xxTable1 x = new xxTable1();
                    x.Description = draggedItem.Description;
                    x.Amount = draggedItem.Amount;
                    (xxTable1DataSource.DomainContext as SilverFinancials.Web.Services.xxTable1).xxTable1s.Add(x);
     
                    //billTypeRadGridViewDrop.ItemsSource= xxTable2DataSource;
                    xxTable1DataSource.DomainContext.SubmitChanges();
                    //xxTable2DataSource.Clear();
                    billTypeRadGridViewDrop.ItemsSource = null;
                    // billTypeRadGridViewDrop.ItemsSource = xxTable2DataSource.DomainContext.Load(SilverFinancials.Web.Services.xxTable2()) ;
                    xxTable1DataSource.Clear();
                    xxTable1DataSource.Load();
                    //  billTypeRadGridViewDrop.ItemsSource = xxTable2DataSource;
                    //   billTypeRadGridViewDrop
                    ////   xxTable2DataSource.DataView.Add(draggedItem);
                    //xxTable2DataSource.DomainContext.
                    // destination.Items.Add(x);
                    //(destination.ItemsSource as IList<xxTable2>).Add(e.Options.Payload as xxTable2);
                }
                ///xxTable2DataSource.Clear();
                //xxTable2DataSource.Load();
            }
     
            void TaskDDS_SubmittedChanges(object sender, SubmittedChangesEventArgs e)
            {
     
                //dc.Load(dc.GetReportsQuery());
     
                //// Report is the name of usercotrol
                //// RepDataGrid is the name of DataGrid control is inside the Report
                //Report.RepDataGrid.ItemsSource = dc.Reports;
            }
     
        }
     
    }

  2. Shakti SIngh Dulawat
    Shakti SIngh Dulawat avatar
    89 posts
    Member since:
    Oct 2009

    Posted 20 Apr 2011 Link to this post

    Is some one here?

    Thanks,
    Shakti
  3. DevCraft banner
  4. Pavel Pavlov
    Admin
    Pavel Pavlov avatar
    2039 posts

    Posted 21 Apr 2011 Link to this post

    Hi Shakti SIngh Dulawat,

    Have you tried the Rebind() of RadGridView. It should forece refresh the UI .

    Best wishes,
    Pavel Pavlov
    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
  5. Shakti SIngh Dulawat
    Shakti SIngh Dulawat avatar
    89 posts
    Member since:
    Oct 2009

    Posted 21 Apr 2011 Link to this post

    Pavel,
    Yes I did that also, looking forward with your response

    Thanks,
    Shakti
  6. Tsvyatko
    Admin
    Tsvyatko avatar
    833 posts

    Posted 21 Apr 2011 Link to this post

    Hello Shakti SIngh Dulawat,

     I have prepared small project demonstrating how to enable drag drop operations in your scenario. Please have a look at the attachment, containing the project as well as database with dummy data.

    Best wishes,
    Tsvyatko
    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
  7. Shakti SIngh Dulawat
    Shakti SIngh Dulawat avatar
    89 posts
    Member since:
    Oct 2009

    Posted 21 Apr 2011 Link to this post

    Thanks that Help me

Back to Top
DevCraft banner