ThabetMicrosoft Ответов: 1

Обновить datagrid после добавления-MVVM WPF


Hi,
 
After adding a new Customer ,it is OK in my database but i want to refresh the DataGrid,


код XAML:
<pre><DataGrid x:Name="EmpDataGrid"

                       

                      ItemsSource="{Binding loadDataBinding,Mode=TwoWay}"                   

                      CanUserResizeRows="False"

                      CanUserAddRows="False"

                      SelectedItem="{Binding CurrentCustomer}" Grid.ColumnSpan="2">


модель представления:



Когда я заканчиваю добавлять функцию, Datagrid не обновляется !! и клиент в мою базу данных добавляется


Спасибо

Что я уже пробовал:

<pre lang="c#"><pre>        private ObservableCollection<Custmor> _loadDataBinding;    

        public ObservableCollection<Custmor> loadDataBinding
        {
            get
            {
                return _loadDataBinding;
            }
            set
            {  _loadDataBinding = value;
                OnPropertyChanged("loadDataBinding");
            }
        }
		
		
		
		 public ViewModel1()
        {
          //Display my DataGrid 
            using (Test1Entities context = new Test1Entities())
            {
                _loadDataBinding = new ObservableCollection<Custmor>(context.Custmor.ToList());
            }  
               
			   //To Show the Window ADD from Window MainWindow
            addCustomerMainWindow = new RelayCommand(add);          

            CustomerToAddObject = new Custmor();

            addCustomer1 = new RelayCommand(ADDFunction);         

		}
		
		//To Show the Window ADD from Window MainWindow
		  private ICommand addCustomerMainWindow;
          public ICommand AddCustomerMainWindow
        {
            get { return addCustomerMainWindow; }
        }

        private void add(object obj)
        {
          
            Add addView = new Add();           
            addView.Show();            
        }
		
		
		private Custmor customerToAddObject;

        public Custmor CustomerToAddObject
        {
            get { return customerToAddObject; }
            set { customerToAddObject = value; }
        }
		
		//The Button ADD from Window ADD
		
		private ICommand addCustomer1;
        public ICommand AddCustomer1
        {
            get { return addCustomer1; }
        }

        private void ADDFunction(object obj)
        {
            using (Test1Entities context = new Test1Entities())
            {
                context.Custmor.Add(customerToAddObject);
                context.SaveChanges();
            }
            
            _loadDataBinding.Add(CurrentCustomer);

        }

1 Ответов

Рейтинг:
0

jimmson

Привет еще раз,

В вашем ADDFunction, вы добавляете CurrentCustomer в вашу коллекцию. Наверное это опечатка и так и должно быть customerToAddObject объект, который вы добавляете в свою базу данных.

Кроме того, вы можете создать объект во время добавления, а не в своем конструкторе.

private void ADDFunction(object obj)
{
    // create new object before adding
    customerToAddObject = new Custmor();
    using (Test1Entities context = new Test1Entities())
    {
        context.Custmor.Add(customerToAddObject);
        context.SaveChanges();
    }
    
    // add correct instance to your binded collection
    _loadDataBinding.Add(customerToAddObject);
}


ThabetMicrosoft

Спасибо,но всегда DataGrid не обновляется

* это добавление окна XAML: Добавь

всегда новое окно добавления остается неподвижным!
Он должен закрыться после добавления и обновления Datagrid ? но как это сделать?

jimmson

О да, теперь я понимаю. Проблема в том, что коллекция в этом окне отличается от коллекции, привязанной к вашей DataGrid.
Мне не ясно, как вы создаете это окно, но вы можете решить эту проблему, если передадите экземпляр _loadDataBinding из предыдущего окна, где находится DataGrid, в это окно и будете использовать его, а не создавать заново.

ThabetMicrosoft

спасибо за ваш ответ ,
сейчас он обновляется, но только для того, кто добавляет нового клиента ... я не могу добавить много..
спасибо ..я задам новый вопрос об этой новой ошибке