Lixoradka
@Lixoradka
.Net разработчик

Как инициализировать javascript объект в ascx форме sharepoint web part?

Здравствуйте.

Возникла необходимость сделать нестандартное решение, а именно для SharePoint 2013 нужно получить данные из списка и построить по этим данным графики. Графики решил строить с помощью jQuery библиотек, но для этого данные сперва нужно как-то передать в ascx из backend'а.

Суть вопроса в том, что в backend коде я могу получить элементы списка, после этого я должен проинициализировать этими данными jQuery плагин и тогда все заработает.

Нашел два возможных пути решения - первый это использовать REST модель доступа к данным и получать данные напрямую в ASCX не прибегая к backend.
Второй путь - строить в backend строку с скриптом, затем передавать эту строку в форму перед рендерингом.

Можно ли как-то разместить placeholder в ascx, чтобы потом просто передать туда строку из backend?
  • Вопрос задан
  • 2732 просмотра
Решения вопроса 1
Lixoradka
@Lixoradka Автор вопроса
.Net разработчик
Нашел наконец-то решение проблемы.
Проблема моя была в том, что я не понимал концепции работы с веб-частями, а теперь до меня дошло, что это обычный asp.net и работать с ним нужно как с asp.net сайтом.

Таким образом если вам необходимо например проинициализировать массив каких-либо элементов в javascript на ascx странице, вы можете использовать подобный код:

<script>
var test = '<%= BackendVariable%>';
</script>


В таком случае если в методе PageLoad была инициализирована эта переменная, она подставиться на место с скобками.

В другом случае, если необходимо рисовать нестандартную разметку допустим в цикле, можно использовать такие конструкции:

<% foreach (var item in collection)
{ %>
    <p> <%= item %> </p>
<% } %>


Тогда при построении страницы будет создана специальная разметка по вашему циклу.

А теперь самое интересное! В Sharepoint 2013 есть возможность пользоваться REST API для доступа к спискам. Оказалось это не так сложно, как я думал. Если выбрать этот подход, то можно практически не пользоваться .NET для обработки запросов, а просто использовать фреймворки а-ля Angular/ExtJS/Knockout.

Возможно в коде допущены незначительные ошибки - писал сразу сюда.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Silvery
Не уверен, что будет работать в 2013, но в Sharepoint 2010 такие вещи делаются через __doPostBack(). Попробуй погугли, может поможет.
Ответ написан
Комментировать
Buzzz
@Buzzz
SharePoint | Office 365 | .Net Developer
В 2010 версии только такие сложные махинации нужны были, сейчас можно все на JavaScript сделать, без Layouts страниц, посмотрите в сторонe SharePoint API, как получить данные из списка можно глянуть здесь: blog.techbuzzz.me/2015/06/sharepoint-csr-callout.html

Если данных сильно много (~5000 элементов), которые надо агрегировать на графиках, то можно использовать Search Service, в частности его API т.к. кравлинг результатов в поиске, кешируется и можно из поиска забирать большой скоуп данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы