Публикация
Хакинг BPMonline:Передачи данных между клиентом и сервером в BPMonline
23 декабря 2011 10:52
Два типа передачи данных между клиентом и сервером:
Первый через 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
}}}}
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));
{0}.setCustomData('parameter', value);”
Page.AddScript(String.Format(Script, Page.Control.ClientID));
‘parameter’ – имя параметра должно совпадать с серверным.
Остальное по смыслу
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать