zen dataCombo

11 views
Skip to first unread message

mainf...@mail.ru

unread,
Jul 28, 2008, 12:09:21 AM7/28/08
to prototype6-ru
Нужна твоя помощь относительно одного вопроса.
Имеется два компонента dataCombo, необходимо чтобы на изменение
первого менялось содержимое второго, пробовал различными способами в
том числе и вот таким:
...
<dataCombo id="region" sql="select id, Name from zen.Region ORDER BY
Name" onchange="zenPage.LoadCity();"/>
<dataCombo id="city" />
...
Method LoadCity() [ Language = javascript ]
{
zenPage.getComponentById('city').setProperty('sql',"select id,Name
from zen.City where Region=1");
zenPage.getComponentById('city').executeQuery();
}
Но ошибка возникает одна и таже:
Error deserializing page: <ILLEGAL VALUE>%ZENDeserialize+91^
%ZEN.Component.dataCombo.2
Property:
Value:

Вика

unread,
Jul 28, 2008, 6:13:16 PM7/28/08
to prototype6-ru
Может быть поробовать так:

<dataCombo id="region" sql="select id, Name from zen.Region ORDER BY
Name" onchange="zenPage.LoadCity();"/>
<dataCombo id="city" sql="select id, Name from zen.City"/>
...
Method LoadCity() [ Language = javascript ]
{

zenPage.getComponentById('city').setProperty('whereClause',"Region=1");
zenPage.getComponentById('city').executeQuery();
}

Напиши, если получилось

AlenaBarabina

unread,
Jul 28, 2008, 6:44:34 PM7/28/08
to prototype6-ru
Можно попробовать через параметр:

<dataCombo id="region" sql="select id, Name from zen.Region ORDER BY
Name" onchange="zenPage.LoadCity();"/>
<dataCombo id="city" sql="select id,Name from zen.City where
Region=?">
<parameter value="1" />
</dataCombo>

//Здесь можно параметр менять по своему усмотрению
Method LoadCity() [ Language = javascript ]
{
//значение выбранного региона из dataCombo
var Id = this.getComponentById('region').getProperty('value');
//dataCombo, список городов для которого необходимо получить
var cmb=zenPage.getComponentById('city');
//фильтруем по параметру если выбрано значение в первом dataCombo
if (Id!="") { cmb.setProperty('parameters',1,Id); }
//если значение первого dataCombo пустое - очищаем второй
else {
cmb.clearCache();
cmb.setProperty('value','');
cmb.setProperty('parameters',1,'');
}

}

Посмотрите логику, попробуйте потестировать..
Мы обычно в своей работе используем параметры и у tablePane и у
dataCombo

mainf...@mail.ru

unread,
Jul 28, 2008, 9:51:54 PM7/28/08
to prototype6-ru
Сделал так:
<dataCombo id="region" label="Регион:"
sql="select id, Name from zen.Region ORDER BY
Name"
onchange="zenPage.LoadCity();"
/>
<dataCombo id="city" label="Город:" />
....

Method LoadCity() [ Language = javascript ]
{
var city=zenPage.getComponentById('city');
city.clearCache();
city.setValue("");
var sql="select id,Name from zen.City where
Region="+zenThis.getProperty('value');
zenPage.SetSql(city,sql);
}

Method SetSql(DCombo As %ZEN.Component.dataCombo, sql As %String)
[ ZenMethod ]
{
set DCombo.sql=sql
}

to Вика
Не работает, не реагирует на изменения, просто выводит весь список

Вариант от AlenaBarabina попроще, может выберу его
Всем спасибо за помощь :)
Reply all
Reply to author
Forward
Message has been deleted
0 new messages