powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / проблема при заполнении combobox в ZEN
9 сообщений из 9, страница 1 из 1
проблема при заполнении combobox в ZEN
    #38028343
feanorcheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача: провести повторную инициализацию полей ввода в некотором модуле после срабатывания определенного события.
Проблема: заполняются повторно все поля кроме полей типа comboBox. Известно, что для этих компонент можно провести рендер с помощью javascript функции .refreshContents(true). Однако, она работает только при заполнении combobox с помощью javascript. При заполнении из zen-метода таких компонент, выбранное поле очищается и более не поддается изменению с помощью javascript. Повторные инициализации не помогают.

Вопрос: как (без переписывания кода инициализации) заполнить выбранные значения в полях combobox средствами Cache?
...
Рейтинг: 0 / 0
проблема при заполнении combobox в ZEN
    #38028457
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feanorcheg ,

Посмотрите исходный код ##class(%ZEN.Component.combobox).%SetDefaultValues()
...
Рейтинг: 0 / 0
проблема при заполнении combobox в ZEN
    #38028647
feanorcheg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

прочитал, вставил, не помогает
...
Рейтинг: 0 / 0
проблема при заполнении combobox в ZEN
    #38028661
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)
}
...
Рейтинг: 0 / 0
проблема при заполнении combobox в ZEN
    #38031138
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feanorchegЗадача: провести повторную инициализацию полей ввода в некотором модуле после срабатывания определенного события.
Проблема: заполняются повторно все поля кроме полей типа comboBox. Известно, что для этих компонент можно провести рендер с помощью javascript функции .refreshContents(true). Однако, она работает только при заполнении combobox с помощью javascript. При заполнении из zen-метода таких компонент, выбранное поле очищается и более не поддается изменению с помощью javascript. Повторные инициализации не помогают.

Вопрос: как (без переписывания кода инициализации) заполнить выбранные значения в полях combobox средствами Cache?

Могу помочь только советом не использовать конструкции типа

Method SrvAdd() [ ZenMethod 

А использовать

ClassMethod SrvAdd() [ ZenMethod 

Помимо того, что это уменьшает количество проблем и сильно увеличивает скорость работы, думаю и с точки зрения клиент-серверной модели так работать более корректно. А с Method + ZenMethod получается мушино-котлетная смесь, на мой взгляд.

Задайте себе вопрос - а можно обойтись без Method? И если можно - обойдитесь. У нас довольно большая система, в которой это ни разу не понадобилось.
...
Рейтинг: 0 / 0
проблема при заполнении combobox в ZEN
    #38031174
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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();
  
  //...
}
иначе - ну никак не получалось..)
...
Рейтинг: 0 / 0
проблема при заполнении combobox в ZEN
    #38031260
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нюансы в производительности методов экземпляра и методов класса в ZEN: 8351945
...
Рейтинг: 0 / 0
проблема при заполнении combobox в ZEN
    #38031336
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аленочка ,

Не пробовали в данном случае отказаться в пользу метода класса?
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();
  
  //...
}
...
Рейтинг: 0 / 0
проблема при заполнении combobox в ZEN
    #38033995
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit, спасибо обязательно попробую.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / проблема при заполнении combobox в ZEN
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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