Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / передача данных в текстовое поле через %session / 15 сообщений из 15, страница 1 из 1
16.01.2011, 14:48
    #37061208
barl_alibek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
есть текстовое поле с id=iin;
есть #(%session.IDOT)#, там хранится некоторая информация;
на страничке zen пытаюсь в текстовое поле через вызов метода (js) закинуть информацию хранящуюся в %session.IDOT
не понимаю как надо правильно объявлять переменную сессии в методе
Код: plaintext
zenPage.getComponentById('iin').setProperty('value','#(%session.Get("IDOT"))#');
...
Рейтинг: 0 / 0
16.01.2011, 20:40
    #37061477
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
#(%session.IDOT)# - это неправильно
s var=%session.Get("var")
d %session.Set("var",var) //Если аргументы не перепутал
...
Рейтинг: 0 / 0
16.01.2011, 21:08
    #37061500
barl_alibek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
написал вот так:
%session.Get("IDOT")
Код: plaintext
zenPage.getComponentById('iin').setProperty('value',%session.Get("IDOT"));
ругается:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ZEN EXCEPTION
 http://localhost:57772/csp/user/crms.AddExersizeG.cls 

A JavaScript exception was caught in function zenPageEventHandler
TypeError: win.zenTestIncludes is not a function
--------------------------------------
Error in zenPageEventHandler: onload
evt:undefined
--------------------------------------
Stack trace:
js:zenExceptionHandler(TypeError: win.zenTestIncludes ...,[object Object],Error in zenPageEventHandler: o...)
js:zenPageEventHandler(onload)
js:onload([object Event])
ну типо этого
...
Рейтинг: 0 / 0
16.01.2011, 21:14
    #37061507
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
%session - это переменная времени генерации страницы
А вы похоже, пытаетесь обратиться к ней из Javascript.
Попробуйте взять ее в #()#
...
Рейтинг: 0 / 0
16.01.2011, 21:21
    #37061517
barl_alibek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
Блок А.Н.,

изначально брал в #()#, не помогает, искал в документации, ничего не нашел. приходит на ум один вопрос: "можно ли так делать?"
...
Рейтинг: 0 / 0
16.01.2011, 21:23
    #37061520
barl_alibek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
а вот тута все работает
Код: plaintext
1.
2.
3.
ClassMethod EditF(id) [ ZenMethod ]
{
	Set %session.Data("IDOF")=id
}
не очень охото переходить на ZenMethod
...
Рейтинг: 0 / 0
16.01.2011, 22:00
    #37061554
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
barl_alibekне понимаю как надо правильно объявлять переменную сессии в методе
В этом деле нужно чётко понимать "где находитесь" и "в какое время"...

Если в хтмле или яваскрипте обязательны кащейские вставки #()#... Но это работает только в момент компилляции страницы. Т.е. динамика напрочь отсутствует.

Если в Кащее - обращайся напрямую. Тут возможна и динамика.

Вот вроде и все правила для работы с сессион...
...
Рейтинг: 0 / 0
17.01.2011, 09:28
    #37061774
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
barl_alibek ,

Объект сессии - это сугубо серверный объект, поэтому Вы не можете к нему обратиться с клиента напрямую.
Если не хотите обращаться к серверу, используйте, например, свойства страницы:
ПримерClass sqlru.test Extends %ZEN.Component.page
{
/// Отображаемое имя для нового приложения.
Parameter PAGENAME;
Property IDOT As %ZEN.Datatype.string;
/// Этот блок Style содержит определение CSS-стиля страницы.
XData Style
{
<style type="text/css">
</style>
}
/// Этот XML блок описывает содержимое этой страницы.
XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
{
<page xmlns=" http://www.intersystems.com/zen"  title="">
<text id="iin" value="#(%session.IDOT)# #(%page.IDOT)#" size="70"/>
<text id="iinClient" size="70"/>
<text id="iinServer" size="70"/>
<button caption="Клиентский метод" onclick="zenPage.clientMethod();"/>
<button caption="Серверный метод" onclick="zenPage.ServerMethod();"/>
 </page>
}

ClientMethod clientMethod() [ Language = javascript ]
{
  zenSetProp('iinClient','value',zenPage.GetSession()+' '+zenPage.IDOT);
}

ClassMethod ServerMethod() [ ZenMethod ]
{
  &js<zenSetProp('iinServer','value','#(%session.Data("IDOT"))# '+zenPage.IDOT);>
}

ClassMethod GetSession() As %String [ ZenMethod ]
{
  q %session.Data("IDOT")
}

Method %OnAfterCreatePage() As %Status
{
  set %session.Data("IDOT")="Сервер"
  set ..IDOT="Клиент"
  Quit $$$OK
}
}
...
Рейтинг: 0 / 0
17.01.2011, 14:13
    #37062516
barl_alibek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
большое спасибо
вроде бы заполняется с помощью описанных выше вариантов,
при срабатывании метода поле заполняется, но при сохранении сохраняет как пустую строку
...
Рейтинг: 0 / 0
17.01.2011, 14:48
    #37062614
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
barl_alibekпри срабатывании метода поле заполняется, но при сохранении сохраняет как пустую строку
Ну тут пора готовить тестовый пример...
...
Рейтинг: 0 / 0
17.01.2011, 16:37
    #37062909
2acid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
barl_alibekбольшое спасибо
вроде бы заполняется с помощью описанных выше вариантов,
при срабатывании метода поле заполняется, но при сохранении сохраняет как пустую строку
Imho, Контроллер должен знать, что Вы изменили поле, если сохраняете через него ...

Проще написать наверное метода, например
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Method setVal(id, val) [ Language = javascript ]
{
	var obj=zen(id)
	obj.setValue(val)
	var form= obj.getForm();
	if (form) {
		form.controlChangeHandler(obj);
	}
}

и вызывать его при программном изменении поля ...
...
Рейтинг: 0 / 0
20.01.2011, 15:45
    #37069496
barl_alibek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
люди

не было времени на это. короче предложенные идеи переделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ClassMethod EditF(id) [ ZenMethod ]
{
	
	
	 &js<var obj=zenPage.getComponentById('iin');
	obj.setValue('#(%session.Data("IDOT"))#')
	var form= obj.getForm();
	if (form) {
		form.controlChangeHandler(obj);
	}>
	
}

всем спасибо кто участвовал и большой поклон
...
Рейтинг: 0 / 0
01.02.2011, 09:04
    #37089757
Ivan.Kokov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
barl_alibek,
За передачу данных через объект %session меня часто били по рукам
Постепенно я отвык

Не злоупотребляйте :-)
...
Рейтинг: 0 / 0
01.02.2011, 09:37
    #37089812
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
Да, удобно.
Но зачастую придумываешь неуникальные идентификаторы, после чего данные начинают передаваться куда не надо.
Так что действительно, без необходимости не стоит злоупотреблять.
...
Рейтинг: 0 / 0
03.02.2011, 10:33
    #37094692
barl_alibek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача данных в текстовое поле через %session
УЧТУ
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / передача данных в текстовое поле через %session / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]