Jak odswiezyć widok datagrida

0

Cześć

Chcę zrobić wyszukiwanie w datagridzie według wartości danej kolumny . Wyszukiwanie działa ale nie odświeża się widok . Może będziecie mogli cos poradzić ? Tak wygląda model

 public IList<OrderElement> OrderElementsCollection { get; set; } = new ObservableCollection<OrderElement>();

        public MenadzerZamowienDB menadzerZamowienDB = new MenadzerZamowienDB();
        public MainViewModel1()
        {
            IList<OrderElement> OrderElementsCollection = menadzerZamowienDB.PobierzListeZamowienZZalacznikami();

             foreach (var a in OrderElementsCollection)
              {
                  AddOrderElement(a);
                  Select(a.IdZamowienia);
                  AddUriToOrderElement(a.IdZamowienia, a.SelectedUri);
             }
        } 

tutaj probuje pobrać szukany string

 private void SzukajFrazy(object sender, TextChangedEventArgs e)
        {

            System.Windows.Controls.TextBox searchBox = (sender as System.Windows.Controls.TextBox);
            MainViewModel1 main = new MainViewModel1();
            main.Po(searchBox.Text);
          }

a tak wyszukuje , kod nawet działa ale widok się nie odswieża . Wcześniej jak był trochę inny układ, wszystko działało .

 public IList<OrderElement> Po(string text)
        {
             OrderElementsCollection =  OrderElementsCollection.Where(c => c.DataZamowienia.StartsWith(text)).ToList();
              return OrderElementsCollection;
       }

mi to tak trochę wygląda jakby OrderElementsCollection z konstruktora był zupełnie inną instancją niż z metody Po() ale nie jestem w stanie usunąć deklaracji typu z konstruktora ponieważ program się sypie .

0

screenshot-20200312195523.png

A teraz zastanów się z poprzedniego posta, bo widzę że nic nie rejestrujesz. Jaka metoda w ViewModelu informuje widok, że właściwość zmieniła się? Sprawdź, czy kolekcja do której bindujesz powiadamia widok. By the Way. To, że to CI działa w ogóle to tylko i wyłącznie fakt, że podsunąłem Ci ObservableCollection, która ma zaimplementowany cudowny interfejs. Gdyby tego nie było, nic byś nie zobaczył w swojej liście. Poczytaj o tym solidnie zanim znów tu napiszesz. I mówie serio, POCZYTAJ KURS I NAUCZ SIĘ PODSTAW

0

ok , zamieniłem instancje listy na jedną , i teraz jest taki problem że w tabeli każdy wiersz jest duplikowany w zależności od ilości załączników przy czym każdy pierwszy wiersz ma wszystkie załączniki a pozostałe z tej podgrupy nie mają załączników ? Tak jak by metody AddOrderElement(a); , AddUriToOrderElement nie działały prawidłowo ? Masz jakąś radę na to ?

  public ObservableCollection<OrderElement> OrderElementsCollection { get; set; } = new ObservableCollection<OrderElement>();
        public MenadzerZamowienDB menadzerZamowienDB = new MenadzerZamowienDB();
            public MainViewModel1()
            {


           OrderElementsCollection = menadzerZamowienDB.PobierzListeZamowienZZalacznikami();


                foreach (var a in OrderElementsCollection)
                {
                    AddOrderElement(a);
                    AddUriToOrderElement(a.IdZamowienia, a.SelectedUri);
               }
            }

0

Nie wiem co robią te twoje wszystkie metody. Nadal nie odświeżasz widoku. Daj więcej kodu

0

dla ścisłości, to są twoje metody, ty je mi podsunąłeś .

 public OrderElement Find(int ID)   
        {
            return OrderElementsCollection.FirstOrDefault(x => x.IdZamowienia == ID);   
        }

public void AddOrderElement(OrderElement ElementToAdd)
{
 if(ElementToAdd == null)
      throw new Exception("ElementToAdd = null");

 OrderCollection.Add(ElementToAdd);
}


public void AddUriToOrderElement(int OrderElementID, string UriToAdd)
{

 // OrderElement FoundElementByID = Find(OrderElementID);
 FoundElementByID.FileUris.Add(UriToAdd);
0

Jedna z tych metod jest błędna. I dla ścisłości : ja ci podsunalem pomysł nie gotowca więc wklejanie ich bez zrozumienia ich działania prowadzi do błędów. Przeczytaj i zrozum wszystko co napisałem w poprzednim poście. Zaczerpnij Google w tym czego nie rozumiesz. Powiedziałem wszystko co mogę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1