none
CSR в SP 2013. Не срабатывает при повторных PostBack. RRS feed

  • Вопрос

  • Хочу узнать почему? Работаю в форме элемента списка. Режим рендеринга веб-части LFWP - StandardLayout. При первичной загрузке страницы и по F5/Ctrl+F5 механизм CSR отрабатывает - могу перерисовать нужное поле, для каждого полей выполняются OnPrerender и OnPostRender, выполняю др. нужные мне действия.

    На на форме есть мои кнопки, которые вызывают функцию __doPostBack() - без параметров. Страница вроде бы мигает (перегружается), но при этом все перерисовывается как будто никакого CSR нет и в помине. Пробовал писать в консоль при каждом вызове обработчиков CSR - пустота, при вызове __doPostBack ни один из них не вызывается => получаем стандартную форму.

    Зачем мне нужны эти кнопки - я таким образом заставляю перерисовываться таблицу на основе DFWP (2-я веб-часть). У меня есть параметры, которые я должен передать в SelectParameters ее источников данных. Кроме как через ParameterBindings и серверные элементы я других способов не знаю. Поэтому мне нужен PostBack.

    Почему CSR шаблоны не отрабатывают? Надо ли мне заполнять какие-то параметры для __doPostBack() или я могу применить CSR принудительно? Буду рад вашим советам!


    8 февраля 2017 г. 8:48

Ответы

  • Дело оказалось в использовании JSLink веб-части. Когда я перенес вызов скрипта с шаблонами в AdditionalPageHead, мой алгоритм стал отрабатывать во всех оговоренных выше случаях.

    Скорее всего результат работы этого свойства где-то кэшируется и больше не вызывается. Хотелось бы об этом узнать подробнее. В каких случаях целесообразно применять JSLink, а в каких нет.

    • Помечено в качестве ответа Denis Prokofjev 10 февраля 2017 г. 14:41
    8 февраля 2017 г. 9:48

Все ответы

  • Добавлю... такой же эффект наблюдается, если повторно открывать формы любых элементов данного списка. CSR отработает только один раз!

    Возможно дело в том, что инициализируется этот механизм с помощью JSLink веб-части LFWP. Возможно дело в кэшировании. Мне кстати после каждого исправления скрипта приходится очищать историю в браузере (GChrome). Может в этом дело?

    1. Стоит ли перенести вызов скрипта на страницу и

    2. если продолжить использовать JSLink (что в общем-то вроде правильно), как добиться ее регулярного вызова?

    8 февраля 2017 г. 9:19
  • Дело оказалось в использовании JSLink веб-части. Когда я перенес вызов скрипта с шаблонами в AdditionalPageHead, мой алгоритм стал отрабатывать во всех оговоренных выше случаях.

    Скорее всего результат работы этого свойства где-то кэшируется и больше не вызывается. Хотелось бы об этом узнать подробнее. В каких случаях целесообразно применять JSLink, а в каких нет.

    • Помечено в качестве ответа Denis Prokofjev 10 февраля 2017 г. 14:41
    8 февраля 2017 г. 9:48