Публикация

Хакинг BPMonline:Передачи данных между клиентом и сервером в BPMonline

Два типа передачи данных между клиентом и сервером:
Первый через ThrowClientEventWithParameters описан ранее, но тут надо использовать своё событие, что не всегда обязательно, хотя может этот ThrowClientEventWithParameters кладёт в контекст страницы, если узнаете – как это сделать, то можно обойтись и без ThrowClientEventWithParameters

Второй способ – использовать customData – поле, которое есть на каждой странице:
Чтение\запись на сервере

var customData = ((Page)Page.AspPage).CustomData;
if (customData.ContainsKey("tempData")) {
var tempData = (JObject)customData["tempData"];
if (tempData != null) {
var data = (JObject)tempData[clientId];
if (data != null) {
var jValue = (JValue)data[parameter];
if (jValue != null) {
 jValue.Value = value; // если хотите прочитать, то достаточно убрать эту строчку и прочитать jValue.Value
}}}}

Для работы скрипта нужно подключить в using неймспейс Terrasoft.Common.Json
Здесь clientId – это идентификатор конкретного контрола Page.Control.ClientID, parameter – имя параметра, который мы читаем\записываем, value – значение. jValue.Value типа Object поэтому при чтении надо преобразовать в нужный тип. Можно ли таким образов передавать ссылочные объекты (классы), не уверен, но обычные можно

Чтение\запись этого параметра на клиенте: В нужном месте добавляем скрипт

string Script = @”var ParamValue = {0}.getCustomData('parameter');
{0}.setCustomData('parameter', value);
Page.AddScript(String.Format(Script, Page.Control.ClientID));

‘parameter’ – имя параметра должно совпадать с серверным.
Остальное по смыслу

Нравится

Поделиться

0 комментариев
Показать все комментарии