Программное редактирование и программное сохранение отредактированной страницы Wiki в Sharepoint 2013

Я вставил код javascript в википедии Sharepoint 2013 с помощью кода вставки.

Базовый код javascript добавляет строки в таблицу, код

var myTable= document.getElementById('myTable');
myTable.innerHTML += myRecord;

Если переменная myRecord содержит html-код для добавляемой строки, html-код выглядит примерно так:

<tr><td>my cell</td><td>my cell 2</td></tr>

Код работает должным образом и добавляет строки в таблицу myTable.

Но когда я нажимаю обновить, чтобы перезагрузить вики-страницу SharePoint 2013, все строки, добавленные программно через javascript, исчезают.

Пожалуйста, подскажите, как динамически добавлять содержимое HTML и сделать его постоянным, чтобы динамическое содержимое HTML не исчезало при перезагрузке страницы. Я знаю, что могу сохранить его в локальном хранилище и получить или попробовать файлы cookie или сеанс, но это невозможно, потому что в таблице будет несколько тысяч записей или намного больше.

Поэтому я просто хочу, чтобы любые изменения, которые я делаю в HTML-коде википедии Sharepoint 2013 с помощью javascript, оставались сохраненными или постоянными.

Некоторые ссылки, которые я нашел, следующие, но, поскольку я новичок в sharepoint, я не могу четко понять, подробные пошаговые инструкции были бы полезны.

Программное редактирование контента Sharepoint Wiki

https://sharepoint.stackexchange.com/questions/69633/is-it-possible-to-programmatically-add-page-items-to-enterprise-wiki-using-csom

https://habaneroconsulting.com/insights/programmatic-change-content-on-a-wiki-page-in-sharepoint-2010#.VcF81v_JAuQ

Удалось воспроизвести кнопку сохранения с помощью CoreInvoke ('PageActionClick', это), но функция кнопки сохранения по умолчанию переключается между сохранением и редактированием, мне нужна только функция сохранения.

Некоторые лучшие ссылки, которые я нашел в Интернете

http://sharepointace.blogspot.com/2013/05/add-custom-buttons-to-edit-or-save.html https://sharepoint.stackexchange.com/questions/88456/assign-edit-fuctionality-to-a-custom-button


person joel    schedule 05.08.2015    source источник
comment
Для записи: что такое Embed Code   -  person theideasmith    schedule 05.08.2015
comment
@theideasmith Вставить код - это опция в меню вставки для SharePoint 2013 WikiPage   -  person joel    schedule 05.08.2015
comment
Насколько я понимаю - встроенный код позволяет вам запускать собственный код в контексте вашей страницы sharepoint? Кроме того, можно ли редактировать эту таблицу без кода? Я просто никогда не пользовался sharepoint, поэтому стараюсь быть в курсе.   -  person theideasmith    schedule 05.08.2015
comment
@theideasmith yes встроенный код позволяет вам вводить собственный код для вики-страницы sharepoint. Пользователь может редактировать таблицу, нажав кнопку редактирования, однако для упрощения взаимодействия с пользователем пользователь может ввести поля и нажать кнопку «Добавить», которая добавляется к таблице.   -  person joel    schedule 05.08.2015


Ответы (1)


Отказ от ответственности: я не использовал Sharepoint, но сделаю все возможное, чтобы помочь.

Чтобы решить эту проблему, необходимо немного разбираться в том, как работает браузер. Каждый раз, когда вы перезагружаете страницу, браузер запрашивает текущий URL-адрес с сервера. Затем сервер возвращает HTML-документ, который отображается браузером.

Вы правильно добавляете HTML в таблицу. К сожалению, каждое внесенное вами изменение существует только в микромире вашего браузера. Каждый раз, когда вы перезагружаете страницу, с сервера возвращается новый HTML-код, который, очевидно, не содержит ваших изменений.

Единственный способ сохранить данные между перезагрузками страницы - это зеркальное отображение ваших данных на сервере. Для этого вам нужно каким-то образом отправить свои данные на сервер, используя тот же механизм, что собственное веб-приложение Sharepoint отправляет данные на свои серверы. В качестве альтернативы вы можете кэшировать только свои локальные изменения внутри браузера и заполнять ими таблицу желаний при посещении его страницы. Я оставлю этот вызов читателю.

person theideasmith    schedule 05.08.2015
comment
Не могли бы вы подробно рассказать о том, как данные могут быть отражены на сервере, было бы здорово, если бы вы могли указать мне на учебное пособие или веб-сайт, который подробно объясняет эти шаги. Я новичок в sharepoint, поэтому этот урок мне очень поможет. Я также отредактировал свой ответ, добавив некоторые ссылки, которые я нашел. Спасибо - person joel; 05.08.2015
comment
Моя проблема. Должно было быть более ясным. В зеркальном отображении сервера я имел в виду, что любые локальные изменения, которые вы вносите, должны быть отправлены на сервер и сохранены в базе данных сервера, поэтому, когда страница перезагружается и сервер читает ваш документ sharepoint из своей базы данных и отправляет его в ваш браузер, ваш предыдущие изменения есть. Чтобы отправить локальные изменения на сервер, вам нужно (я думаю) использовать элемент inspect и выяснить, каков формат запросов PUSH, когда вы редактируете таблицу вручную. Реплицируйте эти запросы с помощью JQuery.ajax. - person theideasmith; 05.08.2015
comment
спасибо за совет, я отлажу и посмотрю, какой пост происходит за кулисами, когда я нажму кнопку сохранения для википедии SharePoint 2013, и посмотрю, смогу ли я реплицировать этот пост программно - person joel; 05.08.2015
comment
Или вы можете имитировать пользователя: введите поля, а затем нажмите кнопку добавления - с помощью JQuery. Нужно ли это автоматизировать? Вы можете воспользоваться Sharepoint API. - person theideasmith; 06.08.2015
comment
после пошагового выполнения кода в браузере IE я обнаружил, что метод coreInvoke () наиболее близок к воспроизведению функциональности кнопки сохранения. Но поскольку это точная копия функции сохранения по умолчанию, кнопка сохранения ведет себя как редактирование и сохранение, мне нужна только функция сохранения, а не функция редактирования. Я добавил несколько полезных ссылок на свой вопрос. - person joel; 09.08.2015
comment
Попробуйте найти библиотеки автоматизации браузера, такие как phantomjs или selenium webdriver. Они могут решить вашу проблему. - person theideasmith; 09.08.2015