Abbiamo un rendering che elenca gli elementi selezionati in un oggetto TreeSelect nell'elemento corrente. Nel nostro caso li chiamiamo "Tags" (1)Sitecore 8, MVC, Experience Editor: come eseguire un aggiornamento di rendering dopo l'utilizzo di un editor di campi Pulsante
Abbiamo aggiunto un pulsante di editor di campi al componente per consentire all'editor di modificare gli elementi selezionati. (2) (Come descritto per esempio Adding a custom component)
Quando un editor fa clic su (2) la finestra dell'editor (3) viene aperta in una finestra di dialogo. L'editor può selezionare diversi elementi (chiamati tag nel nostro caso) utilizzando TreeSelect.
Quando l'editor preme il pulsante OK (4), i valori sono impostati.
Ora per il problema:
I valori sono in realtà impostati come essi vengono memorizzati quando l'editor preme il pulsante Salva, ma noi vogliamo la nostra lista nella pagina (1) in modo da riflettere immediatamente le voci impostate quando le presse Editor il pulsante ok (4), cioè prima di dover effettivamente salvare l'intero oggetto.
Come raggiungerlo?
(io sono in contatto con il supporto Sitecore ma finora non ho ottenuto alcuna risposta ...)
Aggiornamento Dopo un sacco di conversazione con il supporto non abbiamo ancora soluzione utile.
Abbiamo provato a trasformarlo in un renderer di campo che visualizza i collegamenti. Che cosa ha funzionato:
- Il campo si aggiorna quando lo si è modificato nell'editor di campo popup. (ma ...)
- Sembra buono la prima volta quando viene caricata la pagina.
- È possibile creare un pulsante WebEdit con i comandi per modificare il campo e aggiungerlo come pulsante personalizzato al campo (registrare
<command name="webedit:fieldeditor" type="Sitecore.Shell.Applications.WebEdit.Commands.FieldEditor, Sitecore.Client"/>
e impostare Fare clic sul pulsante suwebedit:fieldeditor(command={3473DDA1-2983-493C-AF7A-054C75AA7AD3},fields=NameOfField
dove il guid si rivolge a esso e su di esso è impostata un'icona .)
Cosa non ha funzionato è stato:
- il campo si aggiorna dal valore grezzo, non quello che voglio da visualizzare. Il codice del server è coinvolto, ma non nel rendering del codice html.
- Quando voglio modificare il valore nell'editor di campo, il valore inviato all'editor di campo non è il valore grezzo ma ciò che effettivamente viene visualizzato sulla pagina. (Immagino che questo possa essere risolto in qualche modo)
Il problema del supporto è diventato una richiesta di funzionalità per consentire al server di essere coinvolto nel rendering del campo, non solo di inviare un nuovo valore al codice JavaScript che lo aggiorna. Il server esegue il primo rendering in modo tale che quando è già coinvolto nell'aggiornamento, dovrebbe essere consentito eseguire il rendering anche nei seguenti orari.
Abbiamo deciso di non dedicare più tempo a questo in questo momento (abbiamo anche altre cose da fare) e abbiamo una cattiva esperienza editoriale poiché il campo non viene aggiornato finché l'editor non salva effettivamente l'elemento.
Ancora non abbiamo una soluzione adeguata per questo problema. Se vuoi continuare a lavorarci e vuoi un riferimento al mio problema, è 439059.
In generale il team di supporto Sitecore solo vi chiederà di compilare ulteriori informazioni quando il biglietto non è completo al 100%. La mia esperienza con il dipartimento di supporto è che essi (quando le informazioni sono complete) ti forniranno sempre una soluzione/soluzione adatta al tuo problema. – Younes
Sì, @Younes, la maggior parte delle volte il supporto del sitecore dà delle buone risposte, ma in questo numero ci sono stati diversi malintesi (sia miei sia la loro colpa) che mi hanno reso scontroso. ;-) Quindi ho pensato di offrire alla community StackOverflow la possibilità di produrre una risposta migliore/più veloce. E quando ottengo una risposta più persone dovrebbero essere in grado di leggerlo. –