Skocz do zawartości

Mateusz Matuszewski

InsERT
  • Liczba zawartości

    318
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    5

Community Answers

  1. Mateusz Matuszewski's post in [Filtr sferyczny] Lista wyboru, z własnymi opcjami, z własnymi warunkami was marked as the answer   
    Obecne metody są przeznaczone do tworzenia podstawowych filtrów, a metoda DodajFiltrListyWyboru w założeniu ma przyjmować listę identyfikatorów, które zostaną użyte w wyrażeniu Contains. Tworzenie bardziej zaawansowanych filtrów, w których można by było definiować zachowanie pojedynczych opcji mamy zaplanowane na kolejne wersje. Jednak jak Pan słusznie zauważył, w tym przypadku można zrobić pewne obejście z wykorzystaniem powyższej metody. Nie jest to może najładniejsze rozwiązanie, ale powinno zadziałać

    Spójrzmy na początku na sygnaturę tej metody. Oczekuje ona podania w parametrach dwóch delegatów: Func<IEnumerable<WartoscDoWyboru<Guid>>> oraz Func<Guid[], Expression<Func<Asortyment, bool>>>. Zatem rozwiązaniem pierwszego problemu jest stworzenie listy obiektów typu WartoscDoWyboru<Guid> i nadanie im odpowiednich guidów w polu Wartosc. Rozwiązaniem drugiego problemu jest po prostu stworzenie delegata zwracającego powyższą listę opcji. Ostatni parametr metody odpowiada za wygenerowanie wyrażenia filtrującego na podstawie opcji wybranych w filtrze. Jeśli wyłączymy multiselekcję, to zawsze wybrana będzie tylko jedna wartość, więc będziemy mogli posłużyć się wtedy prostymi ifami.
     
    WartoscDoWyboru<Guid>[] opcje = new WartoscDoWyboru<Guid>[] { new WartoscDoWyboru<Guid> { Wartosc = new Guid("bf06c73c-bcc8-447a-80f8-ba365b3a3ba7"), Opis = "Tak" }, new WartoscDoWyboru<Guid> { Wartosc = new Guid("ba088d29-6279-4b93-8496-faf7402149b2"), Opis = "Nie" } }; var definicjaFiltra = rozszerzenie.DodajFiltrListyWyboru<Asortyment, Guid>( "Pachnący", () => opcje, v => { if (v[0] == opcje[0].Wartosc) // wybraną opcją jest "Tak" { return a => a.Nazwa.Contains("dezodorant") || a.Nazwa.Contains("perfum"); } else // wybraną opcją jest "Nie" { return a => !(a.Nazwa.Contains("dezodorant") || a.Nazwa.Contains("perfum")); } }); definicjaFiltra.WielokrotnyWyborDostepny = false; // wyłączamy multiselekcję  
  2. Mateusz Matuszewski's post in [sdk]Dodanie asortymentu do modelu was marked as the answer   
    Asortyment do modelu można przypisać tylko od strony asortymentu:
     
    IModele modele = sfera.PodajObiektTypu<IModele>(); IAsortymenty asortymenty = sfera.PodajObiektTypu<IAsortymenty>(); Asortyment asortyment = asortymenty.Dane.Wszystkie().Where(w => w.Id == 100030).First(); Model model = modele.Dane.Wszystkie().Where(m => m.Sygnatura.PelnaSygnatura == "l100").First(); using (IAsortyment asortymentBO = asortymenty.Znajdz(asortyment)) { asortymentBO.Dane.Model = model; // przypisanie modelu spowodowało ustawienie domyślnych cech, możemy je teraz zmienić WlasciwoscAsortymentu kolorAsortymentu = asortymentBO.Dane.WlasciwosciAsortymentu.First(w => w.Wlasciwosc.Nazwa == "Kolor"); Wlasciwosc kolor = kolorAsortymentu.Wlasciwosc; CechaAsortymentu kolorCzarny = kolor.CechyAsortymentu.First(c => c.Nazwa == "Czarny"); kolorAsortymentu.CechyAsortymentu.Clear(); kolorAsortymentu.CechyAsortymentu.Add(kolorCzarny); asortymentBO.Zapisz(); }  
×
×
  • Dodaj nową pozycję...