This is a migrated thread and some comments may be shown as answers.

delete a row from raddatagrid by using MVVM pattern

2 Answers 580 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Rahul
Top achievements
Rank 1
Rahul asked on 29 Mar 2011, 04:17 PM
Hi,
How we can a delete a row from raddatagrid by using MVVM pattern?

2 Answers, 1 is accepted

Sort by
0
Rahul
Top achievements
Rank 1
answered on 30 Mar 2011, 10:50 AM

Hi,
I want to add more information about GridRow Deletion.
I need to delete multiple rows from datagrid.
I tried using a SelectedItem, but i guess it works for single row selection.
How we can delete a muliple rows,attcahed a Row DetailsTemplate.
Please help.Attcched a Code snipets.

View:
  
<Grid>
        <StackPanel>
            <StackPanel>
                <StackPanel Orientation="Horizontal">
                    <Label Content="Enter Name"/>
                    <TextBox Height="25" Width="200" Background="AliceBlue" Text="{Binding Name}"/>
                </StackPanel>
                <StackPanel Orientation="Horizontal">
                    <Label Content="Enter Age"/>
                    <TextBox Height="25" Width="200" Background="AliceBlue" Text="{Binding Age}"/>
                </StackPanel>
           </StackPanel>
            <telerik:RadGridView Grid.Row="2" x:Name="orderView" ItemsSource="{Binding Order}" 
                    AutoGenerateColumns="False"  IsReadOnly="False"  SelectedItem="{Binding SelectedOrder}" >
                <telerik:RadGridView.Columns>
                    <telerik:GridViewToggleRowDetailsColumn />
                    <telerik:GridViewSelectColumn Header="Select" x:Name="chkbox" />
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding CustomerName}" Header="Name" />
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Age}" Header="Age" />
                </telerik:RadGridView.Columns>
                <telerik:RadGridView.RowDetailsTemplate >
                    <DataTemplate >
                        <StackPanel >
                            <StackPanel Orientation="Horizontal">
                                <Label Content="Enter Name"/>
                                <TextBox Height="25" Width="200" Background="AliceBlue" Text="{Binding CustomerName}"/>
                            </StackPanel>
                            <StackPanel Orientation="Horizontal">
                                <Label Content="Enter Age"/>
                                <TextBox Height="25" Width="200" Background="AliceBlue" Text="{Binding Age}"/>
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </telerik:RadGridView.RowDetailsTemplate>
            </telerik:RadGridView>
            <StackPanel Orientation="Horizontal">
                <Button Height="25" Width="80" Content="Add Order">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Click">
                            <cmd:EventToCommand Command="{Binding Path=AddOrderClickCommand}" PassEventArgsToCommand="True" />
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </Button>
                <Button Height="25" Width="80" Content="Delete Order" Click="Button_Click">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Click">
                            <cmd:EventToCommand Command="{Binding Path=DeleteOrderClickCommand}" PassEventArgsToCommand="True" />
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </Button>
            </StackPanel>
          </StackPanel>
    </Grid>
  
ViewModel:
class GridViewModel : NotificationObject,INotifyPropertyChanged          
    {
        //ObservableCollection<CustomerOrder> _order;
  
        public GridViewModel()
        {
            //_order = new ObservableCollection<CustomerOrder>();
        }
  
        CustomerOrder cust = new CustomerOrder();
          
        public string Name
        {
            get { return cust.CustomerName; }
            set
            {
                cust.CustomerName = value;
                OnPropertyChanged("Name");
            }
        }
        public int Age
        {
            get { return cust.Age; }
            set
            {
                cust.Age = value;
                OnPropertyChanged("Age");
            }
        }
        public ObservableCollection<CustomerOrder> Order
        {
            get { return cust.Orders; }
        }
        private RelayCommand<RoutedEventArgs> _addOrderClickCommand;
        public RelayCommand<RoutedEventArgs> AddOrderClickCommand
        {
            get
            {
                if (_addOrderClickCommand == null)
                {
                    _addOrderClickCommand = new RelayCommand<RoutedEventArgs>(param => this.AddOrder(param));
                }
                return _addOrderClickCommand;
            }    
        }
        private void AddOrder(RoutedEventArgs e)
        {
              
            Order.Add(new CustomerOrder() { CustomerName = cust.CustomerName, Age = cust.Age });
  
            SelectedOrder = Order[Order.Count-1];
        
        }
        private CustomerOrder _SelectedOrder;
  
        public CustomerOrder SelectedOrder
        {
            get { return _SelectedOrder; }
            set 
            
                _SelectedOrder = value;
                OnPropertyChanged("SelectedOrder");
  
            }
        }
          
         
  
        private RelayCommand<RoutedEventArgs> _deleteOrderClickCommand;
        public RelayCommand<RoutedEventArgs> DeleteOrderClickCommand
        {
            get
            {
                if (_deleteOrderClickCommand == null)
                {
                    _deleteOrderClickCommand = new RelayCommand<RoutedEventArgs>(param => this.DeleteOrder(param));
                }
                return _deleteOrderClickCommand;
            }
        }
        private void DeleteOrder(RoutedEventArgs e)
        {
             
        }
  
        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
  
  
Model:
  public class CustomerOrder
    {
        private string _customerName;
          
        public string CustomerName
        {
            get { return _customerName; }
            set { _customerName = value; }
        }
  
        private int _age;
  
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
  
       ObservableCollection<CustomerOrder> _orders = new ObservableCollection<CustomerOrder>();
  
        public ObservableCollection<CustomerOrder> Orders
        {
            get { return _orders; }
            set { _orders = value; 
                   }
        }
          
    }
0
Accepted
Vlad
Telerik team
answered on 30 Mar 2011, 11:54 AM
Tags
GridView
Asked by
Rahul
Top achievements
Rank 1
Answers by
Rahul
Top achievements
Rank 1
Vlad
Telerik team
Share this question
or