|
Zen и массивы
|
|||
---|---|---|---|
#18+
Подскажите, как можно с помощью dataListBox в Zen вывести одномерный массив? (Пример желателен) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 16:44 |
|
Zen и массивы
|
|||
---|---|---|---|
#18+
AngeL3252 , Class del.test Extends %ZEN.Component.page { /// Этот блок Style содержит определение CSS-стиля страницы. XData Style { <style type="text/css"> </style> } XData Contents [ XMLNamespace = " http://www.intersystems.com/zen" ] { <page xmlns=" http://www.intersystems.com/zen" title=""> <dataListBox queryClass="del.test" queryName="MyArray"/> </page> } Query MyArray() As %Query(ROWSPEC = "Logical:%String,Display:%String") { } ClassMethod MyArrayExecute(ByRef qHandle As %Binary) As %Status { set qHandle("a")="asd" set qHandle("b")="qwe" set qHandle("c")="zxc" Quit $$$OK } ClassMethod MyArrayClose(ByRef qHandle As %Binary) As %Status [ PlaceAfter = MyArrayExecute ] { Quit $$$OK } ClassMethod MyArrayFetch( ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [ PlaceAfter = MyArrayExecute ] { set Row="" set key=$o(qHandle(qHandle)) if key="" { set AtEnd=1 } else { set qHandle=key set Row=$LB(qHandle,qHandle(qHandle)) } Quit $$$OK } } ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 18:21 |
|
Zen и массивы
|
|||
---|---|---|---|
#18+
servit, Спасибо огромное ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 18:32 |
|
Zen и массивы
|
|||
---|---|---|---|
#18+
servit, Выдает ошибку ОШИБКА #5001: <UNDEFINED>zMyArrayFetch+2^del.test.1 *qHandle SOURCE ELEMENT: del.test () ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 18:38 |
|
Zen и массивы
|
|||
---|---|---|---|
#18+
AngeL3252 , Я использую Undefined =2, но Вам достаточно чуть изменить код: set qHandle="" set qHandle("a")="asd" ... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 19:05 |
|
Zen и массивы
|
|||
---|---|---|---|
#18+
Попробую подробнее объяснить задачу. В некотором классе с помощью следующего метода формируется массив conditions(i)Method constructConditions(conditions, nameOfSystem, domain, subdomain, id) { s curentId = id &sql(SELECT countCond INTO :count FROM data.solutionsTables WHERE id = :curentId) s result=##class(%ResultSet).%New("%DynamicQuery:SQL") s sqlQ = "SELECT * FROM data.solutionsTables WHERE id = '"_curentId_"' systemName = '"_nameOfSystem_"' and pDomain = '"_domain_"' and pSubdomain = '"_subdomain_"'" s qstat = result.Prepare(sqlQ) s rest = result.Execute() d result.Next() s conditions = count for i = 1:1:count { s curentCond = $P(result.Get("p"_i),",",3) s curentCond = $E(curentCond,2,$L(curentCond)) s conditions(i) = curentCond } k result } Как его вывести на Zen страничке ( не принципиально, чтобы это был dataListBox ) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 19:06 |
|
Zen и массивы
|
|||
---|---|---|---|
#18+
servit , После изменения получила вот такую ошибку ОШИБКА #5001: <METHOD DOES NOT EXIST>zGetInfo+4^%Library.ResultSet.1 *constructConditionsGetInfo,RTM.SystemStructure SOURCE ELEMENT: del.test () ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 19:44 |
|
Zen и массивы
|
|||
---|---|---|---|
#18+
AngeL3252После изменения получила вот такую ошибкуУ Вас ошибка в тексте запроса: перед "systemName =" не хватает "and". AngeL3252Как его вывести на Zen страничке ( не принципиально, чтобы это был dataListBox )Если не принципиально, то соберите все значения в одну строку - если данных много, то по одному - и выведите через <html>. Вы уверены что массив conditions у Вас виден вне constructConditions ? Если выводить в самом constructConditions , то он должен быть с атрибутом ZenMethod . Применительно к примеру выше можно сделать так: Class del.test Extends %ZEN.Component.page { /// Этот блок Style содержит определение CSS-стиля страницы. XData Style { <style type="text/css"> </style> } XData Contents [ XMLNamespace = " http://www.intersystems.com/zen" ] { <page xmlns=" http://www.intersystems.com/zen" title=""> <dataListBox queryClass="del.test" queryName="MyArray"> <parameter name="nameOfSystem" value="11"/> <parameter name="domain" value="22"/> <parameter name="subdomain" value="33"/> <parameter name="id" value="44"/> </dataListBox> </page> } Query MyArray( nameOfSystem, domain, subdomain, id) As %Query(ROWSPEC = "Logical:%String,Display:%String") { } ClassMethod MyArrayExecute( ByRef qHandle As %Binary, nameOfSystem, domain, subdomain, id) As %Status { ; здесь вызываете или повторяете Ваш метод "constructConditions" set qHandle="" set qHandle("a")=nameOfSystem set qHandle("b")=domain set qHandle("c")=subdomain set qHandle("d")=id Quit $$$OK } ClassMethod MyArrayClose(ByRef qHandle As %Binary) As %Status [ PlaceAfter = MyArrayExecute ] { Quit $$$OK } ClassMethod MyArrayFetch( ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [ PlaceAfter = MyArrayExecute ] { set Row="" set key=$o(qHandle(qHandle)) if key="" { set AtEnd=1 } else { set qHandle=key set Row=$LB(qHandle,qHandle(qHandle)) } Quit $$$OK } } PS: я бы воспользовался параметризованным запросом вместо конкатенации: s result=##class(%ResultSet).%New("%DynamicQuery:SQL") s sqlQ = "SELECT * FROM data.solutionsTables WHERE id = ? and systemName = ? and pDomain = ? and pSubdomain = ?" s qstat = result.Prepare(sqlQ) s rest = result.Execute(curentId,nameOfSystem,pDomain,subdomain) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2013, 20:09 |
|
Zen и массивы
|
|||
---|---|---|---|
#18+
AngeL3252В некотором классе с помощью следующего метода формируется массив conditions(i) ... Как его вывести на Zen страничке ( не принципиально, чтобы это был dataListBox ) В ЗЕНе достаточно компонентов, которые могут использовать запросы для показа данных. Например тот же tablePain Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 09:12 |
|
|
start [/forum/topic.php?fid=39&msg=38132914&tid=1557238]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 258ms |
total: | 529ms |
0 / 0 |