|
проблема при заполнении combobox в ZEN
|
|||
---|---|---|---|
#18+
Задача: провести повторную инициализацию полей ввода в некотором модуле после срабатывания определенного события. Проблема: заполняются повторно все поля кроме полей типа comboBox. Известно, что для этих компонент можно провести рендер с помощью javascript функции .refreshContents(true). Однако, она работает только при заполнении combobox с помощью javascript. При заполнении из zen-метода таких компонент, выбранное поле очищается и более не поддается изменению с помощью javascript. Повторные инициализации не помогают. Вопрос: как (без переписывания кода инициализации) заполнить выбранные значения в полях combobox средствами Cache? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 12:31 |
|
проблема при заполнении combobox в ZEN
|
|||
---|---|---|---|
#18+
feanorcheg , Посмотрите исходный код ##class(%ZEN.Component.combobox).%SetDefaultValues() ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 13:10 |
|
проблема при заполнении combobox в ZEN
|
|||
---|---|---|---|
#18+
servit, прочитал, вставил, не помогает ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 14:22 |
|
проблема при заполнении combobox в ZEN
|
|||
---|---|---|---|
#18+
feanorchegпрочитал, вставил, не помогаетXData Contents [ XMLNamespace = " http://www.intersystems.com/zen" ] { <page xmlns=" http://www.intersystems.com/zen" title=""> <combobox id="comboboxEdit"> <option value="1" text="Apple" /> <option value="2" text="Banana" style="font-size: 2.5em;"/> </combobox> <button caption="Add" onclick="zenPage.SrvAdd();"/> </page> } Method SrvAdd() [ ZenMethod ] { #dim cb As %ZEN.Component.combobox=..%GetComponentById("comboboxEdit") set opt = ##class(%ZEN.Auxiliary.option).%New() set opt.text="Item3" set opt.value=3 do cb.options.Insert(opt) do ..%AddComponent(opt) } ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 14:28 |
|
проблема при заполнении combobox в ZEN
|
|||
---|---|---|---|
#18+
feanorchegЗадача: провести повторную инициализацию полей ввода в некотором модуле после срабатывания определенного события. Проблема: заполняются повторно все поля кроме полей типа comboBox. Известно, что для этих компонент можно провести рендер с помощью javascript функции .refreshContents(true). Однако, она работает только при заполнении combobox с помощью javascript. При заполнении из zen-метода таких компонент, выбранное поле очищается и более не поддается изменению с помощью javascript. Повторные инициализации не помогают. Вопрос: как (без переписывания кода инициализации) заполнить выбранные значения в полях combobox средствами Cache? Могу помочь только советом не использовать конструкции типа Method SrvAdd() [ ZenMethod А использовать ClassMethod SrvAdd() [ ZenMethod Помимо того, что это уменьшает количество проблем и сильно увеличивает скорость работы, думаю и с точки зрения клиент-серверной модели так работать более корректно. А с Method + ZenMethod получается мушино-котлетная смесь, на мой взгляд. Задайте себе вопрос - а можно обойтись без Method? И если можно - обойдитесь. У нас довольно большая система, в которой это ни разу не понадобилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2012, 03:23 |
|
проблема при заполнении combobox в ZEN
|
|||
---|---|---|---|
#18+
kolesov, в моей практике понадобилось, когда нужно было изменить текст sql-запроса для dataCombo <dataCombo label="Договор:" id="cmbContract" sql="SELECT c.ID,c.Aka,c.CreateDate FROM doc_calc.CommercialContract c WHERE UPPER(c.Aka)[UPPER(ISNULL(?,c.Aka)) AND c.IsValidContract=1 AND NOT(ISNULL(c.IsSubcontract,0)=?) ORDER BY c.CreateDate DESC" sqlLookup="SELECT Aka FROM doc_calc.CommercialContract WHERE ID = ?" ... > <parameter value="#(%page.issub)#"/> </dataCombo> пришлось писать метод: Method SetSql4CmbContract(where As %String) As %String [ ZenMethod ] { set sql4CmbContract = "SELECT c.ID,c.Aka,c.CreateDate FROM doc_calc.CommercialContract c" _" WHERE UPPER(c.Aka)[UPPER(ISNULL(?,c.Aka)) AND c.IsValidContract=1" _" AND NOT(ISNULL(c.IsSubcontract,0)=?)" _" AND NOT "_ where _" ORDER BY c.CreateDate DESC" set ..%GetComponentById("cmbContract").sql = sql4CmbContract quit "" } и примерно так его вызывать: ClientMethod showAssociatedContract() [ Language = javascript ] { //... if (zenPage.issub==1) { where = "EXISTS (SELECT ID FROM doc_calc.Contract2Contract " +" WHERE Contract = c.ID AND SubContract=" + contractId + ")"; } else { where = "EXISTS (SELECT ID FROM doc_calc.Contract2Contract " +" WHERE SubContract = c.ID AND Contract=" + contractId + ")"; } zenPage.SetSql4CmbContract(where); zenSetProp('cmbContract','value',''); zen('cmbContract').clearCache(); //... } иначе - ну никак не получалось..) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2012, 08:18 |
|
проблема при заполнении combobox в ZEN
|
|||
---|---|---|---|
#18+
Нюансы в производительности методов экземпляра и методов класса в ZEN: 8351945 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2012, 10:05 |
|
проблема при заполнении combobox в ZEN
|
|||
---|---|---|---|
#18+
Аленочка , Не пробовали в данном случае отказаться в пользу метода класса? ClassMethod SetSql4CmbContract( cmb As %ZEN.Component.dataCombo, where As %String) As %String [ ZenMethod ] { set sql4CmbContract = "SELECT c.ID,c.Aka,c.CreateDate FROM doc_calc.CommercialContract c" _" WHERE UPPER(c.Aka)[UPPER(ISNULL(?,c.Aka)) AND c.IsValidContract=1" _" AND NOT(ISNULL(c.IsSubcontract,0)=?)" _" AND NOT "_ where _" ORDER BY c.CreateDate DESC" set cmb.sql = sql4CmbContract quit "" } ClientMethod showAssociatedContract() [ Language = javascript ] { //... if (zenPage.issub==1) { where = "EXISTS (SELECT ID FROM doc_calc.Contract2Contract " +" WHERE Contract = c.ID AND SubContract=" + contractId + ")"; } else { where = "EXISTS (SELECT ID FROM doc_calc.Contract2Contract " +" WHERE SubContract = c.ID AND Contract=" + contractId + ")"; } var cmb=zen('cmbContract'); zenPage.SetSql4CmbContract(cmb,where); cmb.setValue(''); cmb.clearCache(); //... } ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2012, 10:48 |
|
|
start [/forum/topic.php?fid=39&fpage=31&tid=1557320]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
229ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 253ms |
total: | 572ms |
0 / 0 |