2015-05-28 9 views
20

Mamy renderowanie z listą wybranych elementów w TreeSelect w bieżącym elemencie. W naszym przypadku nazywamy je "Tagi" (1)Sitecore 8, MVC, Experience Editor: Jak wykonać odświeżanie renderowania po użyciu przycisku edytora pola?

Dodaliśmy przycisk edytora pól do komponentu, aby umożliwić redaktorowi zmianę wybranych elementów. (2) (Jak opisano na przykład: Adding a custom component)

Kiedy redaktor kliknie (2) okno edytora (3) zostanie otwarte w oknie dialogowym. Edytor może wybrać różne elementy (zwane w naszym przypadku znacznikami) za pomocą TreeSelect.

Kiedy edytor naciśnie przycisk ok (4), wartości są ustawione.

Teraz do problemu:

Wartości są właściwie ustawione, ponieważ przechowywane gdy redaktor naciśnie przycisk Zapisz, ale chcemy naszą listę na stronie (1) do natychmiastowego odzwierciedlenia zestaw przedmiotów, gdy naciśnie Editor ok-button (4), czyli przed koniecznością zapisania całego przedmiotu.

Jak możemy to osiągnąć?

(jestem w kontaktach z obsługą Sitecore ale do tej pory nie dostałem żadnej odpowiedzi ...)

Screenshot

Aktualizacja Po wielu rozmów ze wsparciem nadal nie mamy przydatne rozwiązanie.

Próbowaliśmy przekształcić go w renderera pola wyświetlającego linki. Co działało:

  • Pole zostanie zaktualizowane po edycji w edytorze pól wyskakujących. (ale ...)
  • Dobrze wygląda przy pierwszym ładowaniu strony.
  • Możesz utworzyć przycisk WebEdit z komendami do edycji pola i dodać go do pola jako przycisk Niestandardowy (zarejestruj się <command name="webedit:fieldeditor" type="Sitecore.Shell.Applications.WebEdit.Commands.FieldEditor, Sitecore.Client"/> i ustaw Kliknij przycisk na webedit:fieldeditor(command={3473DDA1-2983-493C-AF7A-054C75AA7AD3},fields=NameOfField, gdzie wskaźnik wskazuje na niego i ustawiona jest ikona "Ikona" .)

Co nie działa to:

  • pole aktualizowane przez wartość surowca, a nie to, co chcesz zobaczyć. Kod serwera jest zaangażowany, ale nie w renderowanie kodu html.
  • Gdy chcę edytować wartość w edytorze pól, wartość wysłana do edytora pól nie jest wartością nieprzetworzoną, ale co faktycznie jest wyświetlane na stronie. (Myślę, że to może być rozwiązany jakoś)

Kwestia wsparciu przekształcony wniosek fabularnego pozwolić serwer być zaangażowane w świadczeniu tej dziedzinie, nie tylko wysyłanie nową wartość do JavaScriptu aktualizację. Serwer wykonuje pierwsze renderowanie, więc jeśli już jest zaangażowany w aktualizację, powinien mieć możliwość wykonania renderowania również w następujących czasach.

Zdecydowaliśmy, że nie poświęcamy teraz więcej czasu na to (mamy także inne rzeczy do zrobienia). Mamy też kiepskie doświadczenie redaktora, ponieważ pole nie jest aktualizowane, dopóki redaktor nie zapisze tego elementu.

Nadal nie mamy odpowiedniego rozwiązania dla tego problemu. Jeśli chcesz nadal nad tym pracować i chcesz uzyskać odniesienie do mojego problemu, jest to 439059.

+1

Ogólnie zespół Sitecore Wsparcie będzie tylko prosić o wypełnienie dodatkowych informacji, gdy bilet nie jest w 100% kompletne. Moje doświadczenie z działem wsparcia polega na tym, że oni (gdy informacje są kompletne) zawsze dadzą ci odpowiednią poprawkę/rozwiązanie twojego problemu. – Younes

+2

Tak, @ Younes, przez większość czasu obsługa sitecore daje dobre odpowiedzi, ale w tym wydaniu doszło do kilku nieporozumień (zarówno moich, jak i ich winy), które sprawiły, że byłem zrzędliwy. ;-) Więc pomyślałem, że dam społeczności stackoverflow szansę na szybszą odpowiedź. Kiedy otrzymam odpowiedź, więcej osób powinno być w stanie ją przeczytać. –

Odpowiedz

0

To może nie być przydatne tutaj. Zrobiłem to w normalnych serwisach, ale nie w Sitecore. Ale jest jedna możliwość ....

Jest to sytuacja, w której można przekazać funkcję zwrotną do okna podręcznego podrzędnego. To wywołanie zwrotne spowoduje, że okno rozmówcy/rodzica ponownie odczyta/ponownie załaduje informacje, które zostały właśnie zaktualizowane przez dziecko.

Przykład: Użytkownik naciska (2), aby otworzyć okno edytora (3) (okno edytora jest otwarte, a funkcja oddzwaniania jest przekazywana jako parametr) Użytkownik naciska przycisk "OK" (4). Przycisk zdarzenia "OK" aktualizuje zmiany, a następnie wywołuje funkcję oddzwaniania, która ponownie ładuje zaktualizowane informacje i zamyka okno wyskakujące. Po zamknięciu okna, okno nadrzędne wyświetla teraz informacje, które zostały właśnie zaktualizowane w wyskakującym okienku/edytorze.

To zajmuje trochę rozwoju javascript (jquery) po stronie klienta, ale jest całkiem normalne.

1

Proszę spojrzeć na to post.

Jak to działa: how-it-works

Powiązane problemy