Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Cache метод при нажатии на кнопку / 25 сообщений из 38, страница 1 из 2
30.08.2007, 16:13
    #34765236
Sonia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
И снова я! Теперь такой вопрос. Хочу, чтобы при нажатии на кнопку с полей формы (поля текст и радио группы) выполнялся Каше метод. Код:
Код: 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.
<script language="cache" method="getParam" arguments="pfindFLT:%String,pfindREG:%String,psort0:%Boolean,psort1:%Boolean,psort2:%Boolean,psort3:%Boolean,psee0:%Boolean,psee1:%Boolean,psee2:%Boolean">
   
   set rs=##class(%Library.ResultSet).%New("%Library.DynamicQuery:SQL")
  
   if pfindFLT="" set pfindFLT="%"
   if pFindREG="" set pfindREG="%"
   
   if psort0=True set psortfield="flt"
   if psort1=True set psortfield="reg"
   if psort2=True set psortfield="plan_time"
   if psort3=True set psortfield="estimated_time"
   
   if psee0=True set pseefield="%"
   if psee1=True set pseefield="ARR"
   if psee2=True set pseefield="DEP"
   
   set sql="SELECT stat,appn_row_id,flt,tys,reg,plan_time,estimated_time,actual_time,in_out_parking, tal, tas, tar FROM OPS$AODB.viewARRDEP WHERE (stat=?) and (flt=?) and (reg=?) ORDER BY ? "
   set st=rs.Prepare(sql)
   
   do rs.Execute(@pseefield,@pfindFLT,@pfindREG,@psortfield)
   
   write "<html>"
   write "<head>"
   write "</head>"
   write "<body>"
   write "<table width=""100%"" height=""0.18"" border=""1"" align=""center"">"
    
   while rs.Next()
   {
	     
	   write "<tr>"
	   write "<td height=""0.3%"">"_rs.Get("stat")_" </td>"
	   write "<td height=""0.3%"">"_rs.Get("flt")_" </td>"
	   write "<td height=""0.3%"">"_rs.Get("tys")_" </td>"
	   write "<td height=""0.3%"">"_rs.Get("reg")_" </td>"
	   write "<td height=""0.3%"">"_rs.Get("plan_time")_" </td>"
	   write "<td height=""0.3%"">"_rs.Get("estimated_time")_" </td>"
	   write "<td height=""0.3%"">"_rs.Get("actual_time")_" </td>"
	   write "<td height=""0.3%"">"_rs.Get("in_out_parking")_" </td>"
	   write "<td height=""0.3%"">"_rs.Get("tal")_" </td>"
	   write "<td height=""0.3%"">"_rs.Get("tas")_" </td>"
	   write "<td height=""0.3%"">"_rs.Get("tar")_" </td>"
	   write "</tr>"
   }
   
   write "</table>"
   write "</body>"
   write "</html>"
   
  </script> 

<form action="" name="theForm" id="form1" >
...
<input type="button" name="theButton" onClick="#server(..getParam(self.document.theForm.findFLT.value,self.document.theForm.findREG.value,self.document.theForm.sort(0).checked,self.document.theForm.sort(1).checked,self.document.theForm.sort(2).checked,self.document.theForm.sort(3).checked,self.document.theForm.see(0).checked,self.document.theForm.see(1).checked,self.document.theForm.see(2).checked))#" value="OK" />

Где: findFLT, findREG - текстовые поля, sort, see - радио группы

При нажатии на кнопку появляется окно с ошибкой "Http object response incomplete or invalid.0,#V". Дальше наверное не помещается.... Уповаю на вашу помощь :)
...
Рейтинг: 0 / 0
30.08.2007, 17:03
    #34765459
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Думаю что у вас неверный подход к методам Каше... Кащейское гиперсобытие не должно менять документ html...
Эго минимально должно менять javascript или перезагрузка документа (может даже загрузка нового документа) если изменения очень радикальные...
...
Рейтинг: 0 / 0
30.08.2007, 19:31
    #34765981
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
все нормально, только write дожен генерить не html код, а код javascript, с помощью которого вы по типу аякса будете менять свой документ.

Соответвенно для уменьшения обмена с сервером (и упрощения ващей работы) html должен максимально быть вынесенным в статичный csp, а javascript - в js-библиотеки
...
Рейтинг: 0 / 0
31.08.2007, 09:08
    #34766560
Sonia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
krvsaДумаю что у вас неверный подход к методам Каше...
Возможно, я ведь только учусь :)
Только вопрос то не в этом. Вопрос в ошибке, которая появляется при нажатии на кнопку и она возникала и до "обновления старницы" с помощью Каше (write "<html>"...). А самое обидное, что для csp страниц даже отладчик не работает :(
...
Рейтинг: 0 / 0
31.08.2007, 09:44
    #34766651
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Нужно писать вот как
Код: plaintext
&html<<td height="0.3%">#(rs.Get("stat"))#</td>>
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
31.08.2007, 10:28
    #34766821
Sonia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
krvsaНужно писать вот как

Ошибка от этого не пропала :(
...
Рейтинг: 0 / 0
31.08.2007, 10:41
    #34766885
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Sonia , опиши что ты хочеш...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
31.08.2007, 11:17
    #34767070
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
&html<<td height="0.3%">
Так из под "сервера" работать не будет.
...
Рейтинг: 0 / 0
31.08.2007, 11:50
    #34767229
Sonia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Блок А.Н.&html<<td height="0.3%">
Так из под "сервера" работать не будет.
Почему?
...
Рейтинг: 0 / 0
31.08.2007, 11:57
    #34767272
Sonia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
krvsa Sonia , опиши что ты хочеш...

Пользователь вводит значение для поиска в текстовое поле формы и нажимает на кнопку. По нажатию на кнопку выполняется Каше метод getParam, описанный в вопросе, он выполняет динамический запрос с параметром и обновляет таблицу, находящуюся ниже текстового поля и кнопки (рисует заново). Я читала что-то про гиперсобытия, которые могут "обновлять часть страницы"...только как вот это сделать...
Вот пример такого гиперсобытия (осуществляет перевод валюты), взятого из книги:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<HTML>
<HEAD>
<TITLE>Конвертор валют</TITLE>
</HEAD>
<BODY>
<h3>Конвертер валют</h3>
     <form name="Converter">
        Число месяца: <input type="TEXT" name="Day"><br>
        Доллары: <input type="TEXT" name="USD"><br>
        Рубли: <input type="TEXT" name="RUR"><br>
        <input name="Go" type="Button" value="Вычислить" onClick="#server(..Convert(self.document.Converter.Day.value, self.document.Converter.USD.value))#">
     </form>
</BODY>
</HTML>
<script language="Cache" Method="Convert" Arguments="day:%Integer,usd:%Integer">
     new rub
     set rub=usd*$get(^CurrencyRate(day), 30 )
     &javascript<self.document.Converter.RUR.value=#(rub)#;>
</script>


Однако, в этом примере описано, как в объект типа Текстовое поле вывести значение....а вот таблицу же нельзя рассматривать как объект....или можно?
...
Рейтинг: 0 / 0
31.08.2007, 11:57
    #34767275
Sonia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
krvsa Sonia , опиши что ты хочеш...

А ну и загвоздка в ошибке, которая непонятно почему возникает :)
...
Рейтинг: 0 / 0
31.08.2007, 12:06
    #34767330
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Ошибка возникает потому что write у сервера должен генерить javascript, а не html.

Если вам заново нужно нарисовать таблицу, вам нужно поразбираться с динамическим html.
В принципе я подобное делал. Сначала кажется - жуть и кода много. Потом ничего, даже короче, чем html получается. Правда сложновато может получиться сделать поддержку разных браузеров - как раз из-за несовместимости javascript.

Если вам интересно и сам не забуду, выложу примеры (через пару часов)
...
Рейтинг: 0 / 0
31.08.2007, 12:08
    #34767342
Sonia
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Блок А.Н.
Если вам интересно и сам не забуду, выложу примеры (через пару часов)
Выложите, очень интересно
...
Рейтинг: 0 / 0
31.08.2007, 12:44
    #34767495
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Sonia , гипер событие не должно рисовать страницу... Это может сделать
<script language="Cache" runat="Server">
...
</script>

Обработав соответствующие параметры на входе.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
31.08.2007, 15:30
    #34768335
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
да нет, почему же, приходилось и по гиперсобытию рисовать таблицы
Вот надерганый оттуда и упрощеный пример


Код: 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.
<html>
<head>
<script language=javascript>
function addTableRow(parentHTML,rowData,delimiter)
{var tr,td,data,i;
 data=rowData.split(delimiter);
 tr=document.createElement("tr")
 parentHTML.appendChild(tr)	
 
 for (i= 0 ;i<data.length;i++)
   {td=document.createElement("td")
    tr.appendChild(td)	
    td.innerHTML=data[i];
   } 
}
/////////////
function deleteRows(parentHTML)
{while (parentHTML.rows.length>  0 ) 
   {parentHTML.deleteRow( 0 );
   }
}

/////////////
function fillTable(cols,rows)
{#call(..FillTable(cols,rows))#;
}
</script>
</head>

<body>
<table>
<tr><td>Строк<td><input type=text id=rowcount value= 3 >
<tr><td>Столбцов<td><input type=text id=colcount value= 2 >
<tr><td colspan= 2 ><center><button onclick=fillTable(colcount.value,rowcount.value)>Генерить</button>
</table>

<div id=ddata>		
</div>
<table border= 1  >
<tbody id=tdata></tbody>
</table>
</body>
</html>

<script language=cache method=FillTable arguments="cols:%String,rows:%String">
w !,"alert('Рисуем таблицу "_cols_"х"_rows_"');"
w !,"deleteRows(tdata);"
for i= 1 : 1 :rows 
	{s line=$r( 100 )
	 for j= 2 : 1 :cols s line=line_","_$r( 100 )
	 w !,"addTableRow(tdata,'"_line_"',',');"
	}
</script>
Разбирайтесь ;-)
...
Рейтинг: 0 / 0
31.08.2007, 15:45
    #34768427
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Блок А.Н. , я бы не стал в гиперсобытии рисовать что-то в страничке... Пусть это делают JS, <script> или <csp:*>...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
31.08.2007, 15:48
    #34768442
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
почему?
...
Рейтинг: 0 / 0
31.08.2007, 16:07
    #34768529
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Такая тактика у нас :)
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
01.09.2007, 00:03
    #34769434
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
У нас генеральная линия партии - тоже.
Пока на димамическом html идут только отдельные кусочки.
Но так получается проще (при создании сложных страниц) и намного приятнее для пользования.
...
Рейтинг: 0 / 0
04.09.2007, 13:03
    #34774216
МихаилР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Сразу признаюсь, что в Cache я не не просто ноль, а 2 ноля :)
Поэтому вопрос больше для саморазвития, чем для решения конкретных задач:

А есть ли для Cache библиотеки (стандартные или сторонние), позволяющие не писать прямое формирование html-кода?
Например, библиотеки, использующие компонентный подход (аля ASP.Net)?

Из названия технологии - csp, я предположил, что это аналог ASP (JSP), т.e. страница шаблонов. Это так?
И если да, то (вопрос к автору топика) почему бы не воспользоваться этим подходом, как значительно снижающим сложность разработки, по сравнению с формированием html-кода прямо в тексте?
...
Рейтинг: 0 / 0
04.09.2007, 13:14
    #34774267
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
МихаилР , изначально М-программисты взяли себе на вооружение девиз "Наши руки не для скуки"! И все обычно делают сами
Все "наработки" стоят денег... А вот их-то платить никто не собирается...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
04.09.2007, 13:24
    #34774305
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
МихаилРСразу признаюсь, что в Cache я не не просто ноль, а 2 ноля :)
Поэтому вопрос больше для саморазвития, чем для решения конкретных задач:

А есть ли для Cache библиотеки (стандартные или сторонние), позволяющие не писать прямое формирование html-кода?
Например, библиотеки, использующие компонентный подход (аля ASP.Net)?

Из названия технологии - csp, я предположил, что это аналог ASP (JSP), т.e. страница шаблонов. Это так?
И если да, то (вопрос к автору топика) почему бы не воспользоваться этим подходом, как значительно снижающим сложность разработки, по сравнению с формированием html-кода прямо в тексте?

CSR?
...
Рейтинг: 0 / 0
04.09.2007, 14:27
    #34774583
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Ага, CSR для новичков
Возможности хорошие, но если честно, то прочувствовать ее у меня не получилось.
Разработка с готвыми CSR - конечно хорошо, а вот сами CSR как-то тяжело пишутся.
...
Рейтинг: 0 / 0
04.09.2007, 14:32
    #34774604
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Причем проблема скорее не в том, чтобы написать саму CSR , а сколько в том, чтобы придумать компонент, который можно без проблем использовать много раз в самых разных условиях.

Делаешь хороший компонент - теряешь универсальность. Делаешь универсальный - теряешь в удобстве. Но это в общем то проблема не каше и не CSR.
...
Рейтинг: 0 / 0
04.09.2007, 14:41
    #34774641
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cache метод при нажатии на кнопку
Блок А.Н. , так и есть. Даже с использованием классов вариантов "как построить БД" вагон! А с глобалами было и того больше...
Т.ч. схема храниения одних в корне отличалась от схемы хранения у других. Компонентами другдруга пользоваться было невозможно...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Cache метод при нажатии на кнопку / 25 сообщений из 38, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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