powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Кто как работает с формами?
19 сообщений из 44, страница 2 из 2
Кто как работает с формами?
    #36475672
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
doublefintИспользую jQuery и плагины к ней. Например, такой важный для интерфейса к СУБД компонент как Grid

Посмотрел примерчики отсюда:
туту
Первое впечатление ЗЕН действительно менее эффектен, кстать, а почему ZEN так называется? что-то до сих пор не могу понять? Это чё аббревиатура какая то?
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36476503
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotПервое впечатление ЗЕН действительно менее эффектен..

Согласен, дизайнеры в ИС довольно своеобразные, если не сказать оригинальные ;)
Не эффектен, зато эффективен.

Я лично пока не видел ни одного инструмента, который бы обеспечивал такие скорость и качество разработки, легкость поддержки и модификаций, как ZEN. В данном случае я о ZEN говорю, конечно, в связке с Каше (если говорить не о Каше, понятно, что таких платформ есть ;). Сам по себе он довольно уродлив. Некоторые знания в css могут поправить положение, ибо все визуальное оформление лежит в одном файле - бери, да правь... Нужен только художественный вкус ;)
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36496635
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
doublefint,

не мог бы ты какю нибудь страничку тестовую кинуть, чтоб с привязкой к каше была
чтоб данные можно было бы редактировать
спасиб
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36497564
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007, только пример (опускаем вопросы производительности, архитектуры и т.д.)
Данные с интерфейсом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
/// Хранимый класс, данные которого будем показывать в jQuery Grid
Class User.jQGridTest Extends (%Persistent, %Populate) {

Property Code As %Integer [ Required ];
Index CodeIDX On Code [ Unique ];
Property Name As %String [ Required ];
Property Description As %String;

/// Класс будет отдавать свои данные в js
ClassMethod wJS(str As %String) As %Status {
 w ##class(%CSP.Page).QuoteJS(str) Q $$$OK
}

/// Выгрузить объект в формате JSON
ClassMethod wJSON(id As %String) As %Status {
	if '..%ExistsId(id) w "{id:''}" Q $$$ERROR(10001,"id:"_id_" not exists")
	s code=..CodeGetStored(id), name=..NameGetStored(id)
	  , desc=..DescriptionGetStored(id)
	w "{id:" d ..wJS(id) w ",code:" d ..wJS(code)
		w ",name:" d ..wJS(name) w ",desc:" d ..wJS(desc)
	w "}"
    Q $$$OK
}

/// Надо сообщать об ощибках в js
ClassMethod gErr(sc As %Status) As %String {
  Q $system.Status.GetErrorText(sc)
}

/// Ответ на действие
ClassMethod wResponse(ok As %Boolean, newid As %String, err As %String) As %Status {
 w "{ok:",$S(ok=1:"true",1:"false"),",newid:" d ..wJS(newid) w ",err:" d ..wJS(..gErr(err)) w "}" 
 Q $$$OK
}

/// Обработка вызова на добавление от интерфейса
ClassMethod jQGridAdd(ByRef reqData As %String) As %Status {
	s test=..%New(), test.Code=$G(reqData("code",1)), test.Name=$G(reqData("name",1)) 
	, test.Description=$G(reqData("desc",1))
	s sc=test.%Save(), id=test.%Id() k test
	d ..wResponse(+sc,id,sc) Q $$$OK
}

/// Обработка вызова на редактирование от интерфейса
ClassMethod jQGridEdit(ByRef reqData As %String) As %Status {
	s id=$G(reqData("id",1)) 
	if '..%ExistsId(id) {
		s sc=$$$ERROR( 10001 ,"id:"_id_" not exists") 
		d ..wResponse(+sc,id,sc) Q $$$OK
	}
	;упрощенный пример!
	s test=..%OpenId(id), test.Code=$G(reqData("code", 1 )), test.Name=$G(reqData("name", 1 )) 
	, test.Description=$G(reqData("desc", 1 ))
	s sc=test.%Save() k test
	d ..wResponse(+sc,id,sc) Q $$$OK
}

/// Обработка вызова на удаление от интерфейса
ClassMethod jQGridDel(ByRef reqData As %String) As %Status {
	s id=$G(reqData("id", 1 )) 
	if '..%ExistsId(id) {
		s sc=$$$ERROR(10001,"id:"_id_" not exists") 
		d ..wResponse(+sc,id,sc) Q $$$OK
	}
	s sc=..%DeleteId(id) d ..wResponse(+sc,id,sc) Q $$$OK
}

/// Разбор параметров запроса от интерфейса
ClassMethod jQGrid(ByRef reqData As %String) As %Status {
  s mode=$G(reqData("oper",1)) 
  Q:mode="add" ..jQGridAdd(.reqData) 
  Q:mode="edit" ..jQGridEdit(.reqData) 
  Q:mode="del" ..jQGridDel(.reqData)
  q ..jQGridOut(.reqData) ;по умолчанию
}

/// Вывод объектов постранично в jQuery Grid
ClassMethod jQGridOut(ByRef reqData As %String) As %Status {
  s pageNum=+$G(reqData("page",1),1) ;номер запрашиваемой страницы, по умолчанию первый
  s:pageNum<1 pageNum=1 ;контроль номера страницы 
    
  s pageSize=+$G(reqData("rows",100),100) ;вывести строк на страницу, по умолчанию 100
  s:pageSize<1 pageSize=100 ;контроль количества строк на страницу
  
  s SQL = "SELECT ID, Count(*) as records FROM SQLUser.jQGridTest"
  s where=..jQGridWhere(.reqData) s:where'="" SQL=SQL_where
  s order=..jQGridOrder(.reqData) s:order'="" SQL=SQL_order
  ;w "SQL:",SQL
  ;!!! В зависимости от версии Каше используем рекомендуемый %ResultSet || %ResultSet.SQL ||
  s rs=##class(%ResultSet).%New("%DynamicQuery:SQL")
  s sc=rs.Prepare(SQL) if 'sc d $system.OBJ.Dump(sc) Q sc
  s sc=rs.Execute() if 'sc d $system.OBJ.Dump(sc) Q sc
  
  ;диапазон выводимых строк
  s endRow=pageSize*pageNum ;последняя запись которую надо вывести с записи
  s startRow=endRow-pageSize ; начиная с записи
  s i=0,first=1,records=0,pages=0
  
  ;выводим
  w "{rows:["
  while rs.Next() {
   
   s i=i+1 ;счетчик пройденных строк
   if i<=startRow continue ;Не дошли до первой записи
   if i>endRow Q  ;прошли последнюю запись
   
   w:'first "," s:first first= 0  ;запятая после каждого объекта, кроме первого 
   s:records= 0  records=$G(rs.Data("records")) ;количество записей по запросу
   s id=$G(rs.Data("ID")) ;вывод объекта 
   d ..wJSON(id)
  
  }
  d rs.Close(),rs.%Close()
  s pages= 0   ;всего страниц данных
  s:records> 0  pages=records\pageSize ; если есть строки 
  s:records#pageSize> 0  pages=pages+ 1  ; непоместившиеся строки на след страницу
  w "],page:",pageNum,",total:",pages,",records:",records,"}"
  Q $$$OK
}

/// Сбор условий для Where 
ClassMethod jQGridWhere(ByRef reqData As %String) As %String {
 if $d(reqData("_search", 1 ))= 0  Q ""
 s where=" WHERE 1=1 "
 ;!!! Так делать нехорошо. Используйте параметры запроса
 s code=$G(reqData("code", 1 )) s:code'="" where=where_" AND Code['"_code_"'"
 s name=$G(reqData("name",1)) s:name'="" where=where_" AND Name['"_name_"'"
 s desc=$G(reqData("desc", 1 )) s:desc'="" where=where_" AND Description['"_desc_"'"
 q where
}

/// Сбор Order
ClassMethod jQGridOrder(ByRef reqData As %String) As %String {
 s sidx=$G(reqData("sidx",1)) ;сортировать по столбцу 
 if ",code,name,desc,"'[(","_sidx_",") Q ""  ;проверка наименование столбцов сортировки
 s:sidx="desc" sidx="Description"
 s order=" ORDER BY "_sidx
 s sord=$G(reqData("sord", 1 )) if sord'="desc" Q order
 Q order_" "_sord
}

}
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36497567
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посредник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
/// Промежуточный слой 
Class json.jQGridTest Extends %CSP.Page {
Parameter CHARSET = "utf-8";
ClassMethod OnPage() As %Status {
	m reqData=%request.Data
	Q ##class(User.jQGridTest).jQGrid(.reqData)
}
}
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36497570
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
/// Интерфейс
Class csp.jQGridTest Extends %CSP.Page {
Parameter CHARSET = "utf-8"; 
ClassMethod OnPage() As %Status {
 &html<
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title> Пример интерфейса на jQuery Grid плагине </title>
<!--link rel="SHORTCUT ICON" href=""/-->
<link rel='stylesheet' href='css/redmond/jquery-ui-1.7.2.custom.css' type='text/css'/>
<link rel="stylesheet" href="css/ui.jqgrid.css" type="text/css" media="all"  />
<link rel="stylesheet" href="css/jquery.autocomplete.css" type="text/css" media="all"  />
<style type="text/css"> #gbox_table {margin-left:auto;margin-right:auto;} </style>
<body>

<table id="table"></table> 
<div id="navigator"></div>

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.7.2.min.js"></script>
<script type="text/javascript" src="js/i18n/grid.locale-ru.js" ></script>
<script type="text/javascript" src="js/jquery.jqGrid.min.js" ></script>


<script type="text/javascript">
//нужно вынести во внешний скрипт и сжать
var page=document.page||{};
//Обработчик ответа сервера 
page.fn_ServerResponse=function(response,postdata){
   var server=response.responseText;
   server=eval("("+server+")");
   return [server.ok,server.newid,server.err];
}

page.init=function(){
	var code={name:'code',index:'code',label:"Код"
	    ,width: 60 , sorttype:"int",search:true
 		,editable:true
 	};
	var name={name:'name',index:'name',label:"Наименование"
 		,width: 350 ,search:true,stype:'text'
 		,editable:true,edittype:"text",editoptions:{size: 50 }
 	};
 	var desc={name:'desc',index:'desc',label:"Описание"
 		,width: 350 ,search:true,stype:'text'
 		,editable:true,edittype:"text",editoptions:{size: 50 }
 	};	

var grid={
   url:"json.jQGridTest.cls",editurl:"json.jQGridTest.cls"
  ,datatype: "json",mtype:"POST"
  ,jsonReader : { repeatitems: false}
  ,caption: "Тестовые данные для примера"
  ,colModel:[code,name,desc]
  ,autowidth:false
  ,height:  400 
  ,gridview:true
  ,rownumbers:true,viewrecords:true,rowNum: 100 
  ,pager:$("#navigator")
  ,scrollrows:true,scroll: 1 
 }
 
 var table=jQuery("#table"); table.jqGrid(grid); //Создали таблицу
 table.filterToolbar({autosearch:true}); //добавили строку фильтра 
 
 var addOptions={afterSubmit:page.fn_ServerResponse,closeAfterAdd:true
 	,width: 500  
 };
 var editOptions={afterSubmit:page.fn_ServerResponse,closeAfterEdit:true
 	,width: 500  
 };
 var delOptions={afterSubmit:page.fn_ServerResponse,closeAfterDel:true};
 table.jqGrid('navGrid',"#navigator",
       {add:true, view:false, del:true,edit:true,search:false}, 
       editOptions,addOptions,delOptions
 );
 
}
$(page.init);   
</script>
</body>
</html>>

 Quit $$$OK
}

}

...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36497586
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заполняем данными
Код: plaintext
1.
USER>d ##class(jQGridTest).Populate( 1000 )
вызываем через адресную строку http://localhost/app/csp.jQGridTest.cls
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36497631
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
doublefint,

вот ГРАНД мерси!!!
что то мне подсказывает необходимо что то скачать еще у них?
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36497682
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ога. Нужна сама библиотека jQuery-1.3.2 (можно и версию 1.4 только поправить пути к подключаемым js)
Интерфейсные навороты jQuery UI (я брал все, бо вельмі спадабалася) со стилем redmond (там есть пример, как сделать переключатель стилей), ну и сам плагин Grid (тоже выбрал все)
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36497929
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
doublefint,

спасибо, заработало сразу, после прописания правильных путей
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36499319
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
doublefint,

подскажи пожалуйста, на русском документацию где почитать, если она есть?, на худой конец родную
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36499482
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007, сайт плагина, там же ссылки на примеры и документацию . Ну и копи-паст переводчик
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36499663
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
doublefint,

ага понятно, спасибо большое
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36557240
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал пример, на фоксе (3.6.3) такие глюки всплыли (кодировка стоит UTF-8 )
тут

На ИЕ проблем со шрифтом нет.
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36557250
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на лицо проблема не со шрифтом а с кодировкой
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36557367
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2acid,
Это кодировка файла ресурса отличается от кодировки страницы
Код: plaintext
1.
<script type="text/javascript" src="js/i18n/grid.locale-ru.js"></script>
Вариант подключить другой файл ресурса или заставить считать firefox, что страница все-таки в UTF-8
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Parameter CHARSET = "utf-8"; 
ClassMethod OnPage() As %Status {
 &html<
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8" />
<title> Пример интерфейса на jQuery Grid плагине </title>
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36825012
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось бы ещё коснуться вопроса о написании клиента для каши на таких языках как, к примеру, С, ява, делфи. Есть у кого то опыт обработки форм и связывания форм и данных базы каши? насколько это педпочтительнее (или же наоборот геморройнее по сравнению с CSP/ZEN и вообще web интерфейсом) с точки зрения качества форм, удобства программирования? В природе существуют наглядные примеры обработки форм, как скажем методички по ZEN?
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36825234
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotХотелось бы ещё коснуться вопроса о написании клиента для каши на таких языках как, к примеру, С, ява, делфи. Есть у кого то опыт обработки форм и связывания форм и данных базы каши? насколько это педпочтительнее (или же наоборот геморройнее по сравнению с CSP/ZEN и вообще web интерфейсом) с точки зрения качества форм, удобства программирования? В природе существуют наглядные примеры обработки форм, как скажем методички по ZEN?

Клиент написан на VBA и работает на EXCEL ( UNICODE)
База данных на MSM 8 bit , или CACHE 8 bit , или MiniM - 8 bit,
но держит также и все UNICODE символы

Поэтому никаких проблем с китайским языком
или с разными языками вперемешку в одном предложении
...
Рейтинг: 0 / 0
Кто как работает с формами?
    #36825250
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotХотелось бы ещё коснуться вопроса о написании клиента для каши на таких языках как, к примеру, С, ява, делфи. Есть у кого то опыт обработки форм и связывания форм и данных базы каши? насколько это педпочтительнее (или же наоборот геморройнее по сравнению с CSP/ZEN и вообще web интерфейсом) с точки зрения качества форм, удобства программирования? В природе существуют наглядные примеры обработки форм, как скажем методички по ZEN?

вот например Аларис , клиент написанный в CBuilder, с хранением в Cache
это все таки скорее геморройнее, с учетом того что было написано несколько компонент, для связи с Cache, и для отрисовки самих форм использовался (платный, незнаю как раньше) компонент FormDesigner, и для выполнения кода на самом клиенте FastScript
по поводу удобства, то получается, что код необходимо писать как на клиенте так и на сервере, для разных задач
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Кто как работает с формами?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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