Сортировка под Web

Gor

Well-Known Member
07.06.2005
517
2
#1
Всем доброго времени суток!
Есть вопрос.
У меня создана вьюха следующим образом:
В ней создан один единственный столбец, в столбце формула -
Код:
tmp:=@Name([CN];@DbName);
Path:=@Implode(@Explode(@Subset(tmp;-1);"\\\\");"/");
trbgcolor:="#F3F7FA";
"<tr><td><table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#111111\">
<tr bgcolor=\""+trbgcolor+"\" onmouseover=\"bgColor='#C1D7E6'\" onClick=\"window.location='/"+Path+"/Gen2/"+@Text(@DocumentUniqueID)+"?OpenDocument'\" style = \"cursor:hand\" onmouseout=\"bgColor='"+trbgcolor+"'\">
<td width=\"140\" align=\"left\" valign=\"top\"><font class=\"listitem\"><a href=\"/"+Path+"/Gen2/"+@Text(@DocumentUniqueID)+"?OpenDocument\">"+F1+"</a></font></td>
<td align=\"left\" valign=\"top\" width=\"75\"><font class=\"listitem\">"+f4+"</font></td><td align=\"left\" valign=\"top\" width=\"247\"><font class=\"listitem\">"+f5+"</font></td><td align=\"left\" valign=\"top\" width=\"100\"><font class=\"listitem\">"+f9+"</font></td><td align=\"left\" valign=\"top\" width=\"100\"><font class=\"listitem\">"+f8+"</font></td><td align=\"left\" valign=\"top\" width=\"100\"><font class=\"listitem\">"+f7+"</font></td><td align=\"left\" valign=\"top\" width=\"100\"><font class=\"listitem\">"+f6+"</font></td><td align=\"left\" valign=\"top\" width=\"100\"><font class=\"listitem\">"+f3+"</font></td>
</tr></table>
</tr></td>"
Вьюха конечно Treat view content as html
Как сделать так, чтобы в данной вьюхе был всегда отсортирован какой нибудь столбец?? (f1,f4,f5,f9 итд любой)
т.е. Аналог Ascending на колонке??
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#2
Для: Gor
Создать скрытый столбец и отсортировать его.
 

Gor

Well-Known Member
07.06.2005
517
2
#3
Для: Medevic
Спасибо, получилось)


Для: ALL
Бьюсь ещё вот сейчас с чем.

Всё под Web.
На форме
Есть радиобуттон с 3-мя вариантами. (First name, Last name, Department) В его свойствах
Refresh field on keyword change

Есть Embeded View с Embeded selection
@If(Lay = "First name";"Gen3";Lay = "Last name";"Gen4";Lay = "Department";"Gen2";"Gen3")

Т.е. при переключении отображаются разные вьюхи. Вьюхи сортированные как я писал в верхнем посте.

Главный вопрос: Как правильно создать навигацию по вьюхам? Ведь когда я переключаюсь между вьюхами с помощью Radiobutton а потом нажимаю на навигационную кнопку - Значение в Radiobutton сбрасывается на пустое и вся навигация строится относительно вьюхи Gen3. Как с этим бороться?? Чтобы при нажатии на навигационные кнопки значение в Radiobuuton оставалось такое же, какое было а не обнулялось при рефреше страницы? Или я как то неправильно делаю и есть другие способы?


На всякий случай вот код кнопок навигации
Код:
s:=@GetField("Lay");
@SetField("Lay";s);
Path:=@Implode(@Explode(@Subset(tmp;-1);"\\\\");"/");
ls := "0":"1":"2":"3":"4":"5":"6":"7":"8":"9";
ls1 := @TextToNumber(ls *+ ls *+ ls);
Count>=Total};
@If(Count>Total; @Return(""); @Success);
@If(Count>Total; @Return("1 - " + @Text(Count)); @Success);
a := Total/Count;
a1 := @Integer(a);
ls2 := @Subset(ls1; a1);
st := ls2 * Count + 1;
fin := (ls2 + 1) * Count;
st1 := @If(a1<a; st : ((a1)*Count +1); st);
fin1 := @If(a1<a; fin : Total; fin);
stfin := @Text(st1) + " - " + @Text(fin1);
tmp:=@Name([CN];@DbName);
Path:=@Implode(@Explode(@Subset(tmp;-1);"\\\\");"/");
out := "<A HREF=\"/" + Path + "\\Cards?OpenForm&Count=" + @Text(Count) + "&Start=" + @Text(st1) + "\">" + stfin + "</A>";
memb := @Member(@Text(Start); @Text(st1));
curel := @If(memb>0; @Subset(@Subset(out; memb); -1); "");
curelfin := @If(memb>0; @Subset(@Subset(stfin; memb); -1); "");
lst := @Replace(out; curel; curelfin);
@Implode(lst; " . . ")
 

Gor

Well-Known Member
07.06.2005
517
2
#4
Может быть по другому поставить вопрос?....
Допустим есть фрэймсет, он разделён на 2 фрэйма.
В верхнем фрэйме Combobox с выбором 3х пунктов. Нижний должен отображать формы.

Как сделать так чтобы при выборе одного из пункта в комбобоксе нижний фрэйм отображал разные формы???
 
F

fvoice

Гость
#5
Для: Gor
событие OnChange, код JS:

Код:
parent.frame1.location.href= "/database.nsf/form?openform";
 

Gor

Well-Known Member
07.06.2005
517
2
#6
Для: fvoice

Пытаюсь оживить... неполучается...
на событие OnChange (т.к. в радиобуттоне всего 3 выбора (First name, Last name, Department))
повесил вот такое, чтобы оно мне рисовало разные страницы в фрэйме при нажатии на разные пункты:

Код:
	import java.util.Vector;
import java.util.*;

if (document.forms[0].Lay = "First name") {
parent.frame1.location.href= ("http://srvclst1/ITphones.nsf/Cards1?OpenForm");
};

if (document.forms[0].Lay = "Last name") {
parent.frame1.location.href= ("http://srvclst1/ITphones.nsf/Cards2?OpenForm");
};

if (document.forms[0].Lay = "Department") {
parent.frame1.location.href= ("http://srvclst1/ITphones.nsf/Cards3?OpenForm");
};
(Lay - имя поля)
не работает(( не отрисовывает.... Я в джаве новичек совсем... Не подскажите где ошибка?
 
F

fvoice

Гость
#7
<!--QuoteBegin-Gor+23:01:2008, 12:23 -->
<span class="vbquote">(Gor @ 23:01:2008, 12:23 )</span><!--QuoteEBegin-->Я в джаве новичек совсем
[snapback]94602" rel="nofollow" target="_blank[/snapback]​
[/quote]
:) я тоже
а какую ошибку пишет? (в експлорере сразу ошибку выводит, а в лисе Информация - Консоль ошибок)

фрейм называется frame1? если нет то так и пишите:
Код:
parent.ThisIsMyFrame'sName.location.href= ("http://srvclst1/ITphones.nsf/Cards3?OpenForm");
<!--QuoteBegin-Gor+23:01:2008, 12:23 -->
<span class="vbquote">(Gor @ 23:01:2008, 12:23 )</span><!--QuoteEBegin-->import java.util.Vector;
import java.util.*;
[snapback]94602" rel="nofollow" target="_blank[/snapback]​
[/quote]
а что это такое?
 
F

fvoice

Гость
#8
еще исправьте:
Код:
if (document.forms[0].Lay.value == "First name") {
могу посоветовать отличный сайт, на нем можно найти очень много про Web технологии (с примерами и местами даже картинками :) )
 

Gor

Well-Known Member
07.06.2005
517
2
#9
Для: fvoice
а ошибку никакую вроде в браузере не выводит)) просто страница не обновляется и всё) не выводится ничего в frame1

в верхнем фрейме под названием Frame2 находится Радиобаттон с вариантами (First name, Last name, Department)

В нижнем фрейме под названием Frame1 при переключении Радиобаттона должны отображаться страницы по ссылкам
http://srvclst1/ITphones.nsf/Cards3?OpenForm (при Department)
http://srvclst1/ITphones.nsf/Cards2?OpenForm (при Last name)
http://srvclst1/ITphones.nsf/Cards1?OpenForm (при First name)

Lay - это имя поля Радиобаттона

на OnFocus повесил поля Lay повесил
Код:
		 if (document.forms[0].Lay == "First name") {
parent.frame1.location.href= ("http://srvclst1/ITphones.nsf/Cards1?OpenForm");
};

if (document.forms[0].Lay =="Last name") {
parent.frame1.location.href= ("http://srvclst1/ITphones.nsf/Cards2?OpenForm");
};

if (document.forms[0].Lay == "Department") {
parent.frame1.location.href= ("http://srvclst1/ITphones.nsf/Cards3?OpenForm");
};
при переключении Радиобаттона нижний фрейм frame1 остаётся неизменным...??? почему??
 
F

fvoice

Гость
#10
Для: Gor
Попробовал повторить, извините за то что советовал не проверив..

Выяснил:

1. лучше вешать на OnClick, т.к. OnChange срабатывает только после щелчка по странице или выборе другого значения.

2. Следующая конструкция, помещенная в событие OnClick 100% работает:
Код:
parent.WorkFrame.location.href = this.value
,где:
parent - родительское окно содержащее фреймы
WorkFrame - название фрейма, жутко чувствительно к регистру
this - текущий элемент (radiobutton),
value - значение выбранного элемента Radiobutton - а
 
F

fvoice

Гость
#11
кмк лучше сделать по аналогии с ваша ссылка

и писать пастру хтмлом на форме.

Примерно так:

Код:
<script language="JavaScript" type="text/javascript">
<!-- 
function doSwitchView( view ){
parent.frame1.location.href = view+"?OpenForm";
}
// -->
</script>

<input type="radio" onclick="doSwitchView(this.value)" checked name="Lay" value="Cards1" id="Firstname " /><label for="Firstname ">First Name</label> 
<input type="radio" onclick="doSwitchView(this.value)" name="Lay" value="Cards2" id="Lastname " /><label for="Lastname ">Last Name</label>
<input type="radio" onclick="doSwitchView(this.value)"  name="Lay" value="Department " id="Department " /><label for="Department ">Department </label>
скопируйте этот текст на форму, выделите , выберите в меню Text -> Pass-Thru HTML
 

Gor

Well-Known Member
07.06.2005
517
2
#12
СПАСИБО ОГРОМНОООООООЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! получилооось!!!!=)))))
Только почему то Радиобуттон не переключается))) Точнее переключается если только нажать на выбор Department.
Висит всё время на выборе Department и всё как по другим радиобуттонам не щёлкаешь)) Нажмёшь на First name - Фрейм поменяется а выбор висит на Department)) С чем связано не подскажите?
а во фрейме формы меняются)
 
F

fvoice

Гость
#13
может свойство checked стоит у Вас на Department.. и документ с радиобутоном случаем каждый раз не обновляется?
 

Gor

Well-Known Member
07.06.2005
517
2
#14
Для: fvoice
Действительно, стоял checked.

У меня тут ещё один вопросик возник))

Например, открываешь какой нибудь документ из вьюхи в WEB.
В документе есть кнопки Edit (@Command([EditDocument])) и Save (@Command([FileSave]);@Command([EditDocument])). Нажимаешь Edit - исправляешь инвормацию, Save сохраняешь. После этого если начинаешь работать с базой данные остаются неизменными и изменения отрисовываются только тогда, когда базу открываешь заново по ссылке. Возможно ли сделать редактирование документа и обновление изменений сразу же? Не переоткрывая базу?
И ещё))) как возможно удалить документ под WEB?? Есть ли каккая нибудь формула для этого кдалить текущий документ если кнопку Delete на форме сделать прямо?
 
F

fvoice

Гость
#15
<!--QuoteBegin-Gor+25:01:2008, 09:59 -->
<span class="vbquote">(Gor @ 25:01:2008, 09:59 )</span><!--QuoteEBegin-->если начинаешь работать с базой данные остаются неизменными и изменения отрисовываются только тогда, когда базу открываешь заново по ссылке
[snapback]94965" rel="nofollow" target="_blank[/snapback]​
[/quote]
остаются неизменными после возвращения во вью или прям в документе?
Я обычно использую @URLOpen функцию в которой формирую URL для открытия нужного элемента (агент, документ, вью и т.д.) после выполнения которого данные подгуржаются уже обновленные.. т.е. код кнопки "Сохранить и выйти", которая сохраняет документ и запускает агент, который формирует страницу:
Код:
@Command([FileSave]);
@URLOpen("http://myhost/index.nsf/ShowNews?OpenAgent")
<!--QuoteBegin-Gor+25:01:2008, 09:59 -->
<span class="vbquote">(Gor @ 25:01:2008, 09:59 )</span><!--QuoteEBegin-->как возможно удалить документ под WEB?? Есть ли каккая нибудь формула для этого кдалить текущий документ если кнопку Delete на форме сделать прямо?
[snapback]94965" rel="nofollow" target="_blank[/snapback]​
[/quote]
ну здесь мне кажется как и в клиенте, если пользователь не может удалять документы, то использовать поле флаг, по содержимому которого, агент, подписанный человеком способным удалять документы, будет удалять документы. Например менять название формы на "Deleted", и шедульный агент его удалит + этот документ пропадет из всех вьюх.

Если пользователь может удалять доки, то разве flag = notesDocument.Remove( force ) не будет работать под веб?
__________
я имею в виду агента
 

Gor

Well-Known Member
07.06.2005
517
2
#16
остаются неизменными после возвращения во вью или прям в документе?
Я обычно использую @URLOpen функцию в которой формирую URL для открытия нужного элемента (агент, документ, вью и т.д.) после выполнения которого данные подгуржаются уже обновленные.. т.е. код кнопки "Сохранить и выйти", которая сохраняет документ и запускает агент, который формирует страницу:
А в агенте что должно быть? Рефреш всех вьюх? переоткрытие базы? Не совсем ясно.

С удалением через агента вроде бы понятно.
Кнопки Delete и Edit я просто со скрытием сделаю для определённой группы пользователей в Лотусе. У меня только одна группа править документы может.
 
F

fvoice

Гость
#17
<!--QuoteBegin-Gor+25:01:2008, 12:31 -->
<span class="vbquote">(Gor @ 25:01:2008, 12:31 )</span><!--QuoteEBegin-->А в агенте что должно быть? Рефреш всех вьюх? переоткрытие базы? Не совсем ясно.
[snapback]94970" rel="nofollow" target="_blank[/snapback]​
[/quote]
у меня в агенте код который хтмл страницу генерирует, и т.к. запуск агента был вызван в ифрейме, то в нем страницу и выводит:
Код:
	Set dc = db.Search({Select form="NewsLetter"},Nothing,0)
If dc.Count=0 Then
Print "Новости отсутствуют"
Exit Sub
End If

Print |<script language="JavaScript" type="text/javascript" src="jslib.js"></script>|
Print |<link rel=stylesheet type='text/css' href='/index.nsf/cssStyle?ReadForm'>|
Print |<link rel=stylesheet type='text/css' href='/index.nsf/cssNews?ReadForm'>|

Print |<div id='News'>|
Set doc = dc.GetFirstDocument
While Not doc Is Nothing
Print |<div id='NewsTitle'>|+doc.Type(0)+|</div>|
Print |<div id='NewsContent'>|+doc.Comment(0)+|</div>|
Print |<div id='Details'><a href="/index.nsf/news/|+doc.UniversalID+|?OpenDocument"> Подробнее</a></div>|
Set doc = dc.GetNextDocument(doc)
Wend	
Print |</div>|

Print |<script>|
Print |<!-- |
Print |id=setTimeout("top.document.getElementById('ContentIfr').style.height = getDocumentHeight()+30;",200)|
Print |// -->|
Print |</SCRIPT>|

если Вам нужно открыть вью, так и пишите:
Код:
@URLOpen("http://myhost/index.nsf/ViewName?OpenView")
если форму то:
Код:
@URLOpen("http://myhost/index.nsf/FormName?OpenForm")
т.е. логика немного другая, в клиенте вы закрываете документ, фокус переходит на предыдущую вкладку, а в браузере нужно не закрывать документ, а открывать вместо него что-нибудь другое.
 

Gor

Well-Known Member
07.06.2005
517
2
#18
Для: fvoice

Наболел тут ещё один вопросик=) Если я сильно очень не надоел подскажите возможно)

Форма под Web (Cards2) на форме есть Embeded View под названием Gen2
пытаюсь её отсортировать формирую к примеру вот такую ссылку

Код:
http://srvclst1/ITphones.nsf/Cards?readform&view=Gen2&RestrictToCategory=A
Хочу вывести по этой ссылке все фамилии на букву А. Форма перегружается и документы не находятся, не отображаются. Что необходимо чтобы сортировка заработала? При каких условиях? Как оно будет работать?
 
F

fvoice

Гость
#19
Для: Gor
первый столбец вьюхи должен быть категоризирован по первой букве фамилии @Left(Surname;1)
 

Gor

Well-Known Member
07.06.2005
517
2
#20
Для: fvoice
А для русских букв сортировка не работает получается да?
Для английский получилось а для русских непонятка какая то....
на каждой букве гиперссылка вид
Код:
Path:=@Implode(@Explode(@Subset(tmp;-1);"\\\\");"/");
tmp:=@Name([CN];@DbName);
"<A HREF=\"/" + Path + "ITphones.nsf\\Cards44?ReadForm&View=Gen55&RestrictToCategory=Г"+"\">Г</A>"
Открываешь форму, кликаешь на букву Г к примеру, список по фамилиям поуявляется на букву Г, а потом если ещё раз нажать на ту же самую букву или на другую документы уже не находятся. Т.е. срабатывает только при первом нажатии после открытия, а при повторном нет...