Форум продуктов IBM Lotus
Общие вопросы => Разработка приложений => Тема начата: CL1F от 24 Май 2012, 11:49:21
-
Интересуют 2 момента ...
1) Можно ли построить сложную шапку для таблицы ... пример во вложении ... (3х уровневая шапка с объединением ячеек)
2) Как известно для каждой вьюшки можно создать шаблон ($$ViewTemplate for DocumentByGetTrashUnitAgent ), что бы несколько вьюшек отображались через 1 шабон надо имена поместить в поле Title ... или просто в названии прописать через ( | ), например
$$ViewTemplate for DocumentByGiveTrashUnit | $$ViewTemplate for DocumentByGetTrashUnit | $$ViewTemplate for DocumentByGiveTrashUnitAgent | $$ViewTemplate for DocumentByGetTrashUnitAgent ... ссылка на ман https://www.ibm.com/developerworks/ru/edu/lotwebapp/section3.html (https://www.ibm.com/developerworks/ru/edu/lotwebapp/section3.html) ... но почему то шаблон применяется для первой и для последней вьюшки, в чем беда ?
-
Добрый день!
1. С помощью вида нельзя. Можно попробовать самому рисовать таблицу на форме.
2. Есть ограничение на длину имени формы. Скорее всего из-за этого такой эффект.
Если шаблон единый, то используйте $$ViewTemplateDefault.
-
1) сейчас реализовано с помощью JQ ... как документ загружен ... вырезаем 1-ую TR ... и записываем то что нам надо ...
2) вьюх очень много ... и шаблон по умолчанию используется ... ... попробую урезать имя хотя сейчас размер Data Length: 186 bytes, как бы не в размере дело
-
Обычно пара-тройка имен $$ViewTemplate for ... влезает в имя, дальше уже не идет.
-
Добрый день!
1. С помощью вида нельзя. Можно попробовать самому рисовать таблицу на форме.
велика вероятность что таблица поползет ... даже с учетом CSS ...
-
Если сам формируешь HTML, то такого не будет.
-
не понял ....
для вьюшки создаем шаблон ... шапку описываем в шаблоне ...
вьюшку садим ... если так то ползет обязательно
расскажи о своем варианте
-
Можно, к примеру, агентом весь вид формировать.
Т.е. на форме, на WebQueryOpen работает агент, который формирует шапку, бегает по нужному виду, собирает данные, обертывает их в теги, полученный код пишет в ричтекстовое поле на форме. При загрузке форма отображает сформированный HTML из поля.
-
интересная мысль ... попробую реализовать ... но у нас сегодня закрытие периода ... так что не сразу выложу результат ...
-
выдалась минутка ... наливаю кофе и пишу о своем решении )
Общий концепт.
1) Создана вьюшка с нужными полями (колонками)
2) Создаем агент по обработке вьюшки
3) Передаем параметры POSTом, что б не засорять адресную строку
Сам агент расписан по функциям в теле(Initialize) проверка на значение переменной iAction и в зависимости от значений запускаем ряд функций
If iAction = "1" And UNID <> "" Then
' Удаление документа
Doc_Del(iPOST)
iAction = "100"
End If
If iAction = "2" And UNID <> "" Then
' Редактирование документа
Doc_Edit(iPOST)
iAction = "100"
End If
If iAction = "3" Then
' Создание документа
Doc_Add(iPOST)
iAction = "100"
End If
' /////////////////////////////////////////////////////////////////////////////////////////////////////
If iAction = "100" Then
' Построение таблиц
html=""
html=html + build_doc_css ()
html=html + build_doc (iPOST)
html=html + build_doc_bott ()
End If
ну что то пит того
За построение шапок отвечает ряд функций которые запускаются в зависимости от значений ViewName в функции build_doc (iPOST), например:
Function build_table_O () As String
' (Отправлено) Передано отходов подразделению
table= {
<table width="100px" cellspacing="0" cellpadding="0" class="TabFont FCenter" border="1" bordercolor="#000000" style="border-collapse:collapse" >
<tr class="FTop">
<td rowspan="3">№ <br /> п/п</td>
<td rowspan="3">Наименование отхода</td>
<td rowspan="3">Код отхода по ФККО</td>
<td rowspan="3">Кол- во</td>
<td rowspan="3">Структурное подразделение, которому передан / принят отход</td>
<td colspan="5">Цель передачи</td>
</tr>
<tr class="FTop">
<td colspan="2">Размещение</td>
<td rowspan="2">Использова- ние в т.ч. переработка)</td>
<td rowspan="2">Обезврежива- ние</td>
<td rowspan="2">Временное складирова- ние в подразделе- нии (накопление)</td>
</tr>
<tr class="FTop">
<td>Хранение (на шлаковом отвале)</td>
<td>Захоронение (на площадке мусоров)</td>
</tr>
<tr>
<td><img src="blank.gif" width="30" height="1"><br>1</td>
<td><img src="blank.gif" width="360" height="1"><br>2</td>
<td><img src="blank.gif" width="110" height="1"><br>3</td>
<td><img src="blank.gif" width="90" height="1"><br>4</td>
<td><img src="blank.gif" width="90" height="1"><br>5</td>
<td><img src="blank.gif" width="90" height="1"><br>6</td>
<td><img src="blank.gif" width="90" height="1"><br>7</td>
<td><img src="blank.gif" width="90" height="1"><br>8</td>
<td><img src="blank.gif" width="90" height="1"><br>9</td>
<td><img src="blank.gif" width="90" height="1"><br>10</td>
</tr>}
build_table_O = table
End Function
3х ярусная шапка, ширина колонок сделана картинками ))) так как КСС все ровно пляшет в разных браузерах (из-за ширины таблиц, то больше экрана то меньше, косячел в основном Хром, как не странно)
Проблемные места :
1) При сохранении документа из агента .... требовалось приводить числа к нормальному виду, для этого написалась (сама как то) функция по замене символа в строке для последующего преобразования в val()
Function StrReplace( Byval src As String, Byval dest As String, arg As String) As String
pos = Instr(arg, src)
' Создаем цыкл, пока не заменим все элементы
While (pos > 0)
arg = Left(arg, pos - 1) + dest + Mid(arg, pos + Len(src))
pos = Instr(pos + Len(dest), arg, src)
Wend
' Возвращаем строку
strreplace = arg
End Function
2) Требовалось перекодировать пост запрос(.Request_Content(0)) ... так как аналога(.Query_String_Decoded(0)) я не нашел
' Декодирование строки из %CF%E5 в Пе
Function UrlDecode(s As String) As String
If Len(s) = 0 Then Exit Function
Dim i As Integer
Dim tmp As String
Dim c As String
For i = 1 To Len(s)
c = Mid$(s, i, 1)
If c = "+" Then c = " "
If c = "%" Then
c = Chr$("&H" + Mid$(s, i + 1, 2))
i = i + 2
End If
tmp = tmp + c
Next i
UrlDecode = tmp
End Function
3) и классическое решение с нулями в числах ... то есть если принтить 0,2 то обязательно отобразится ,2 ... ну не айс
Function Num_to_Str ( Byval number As String) As String
On Error Goto opss
Number_Fix = Fix(number)
Number_Fraction = Round(Fraction(number), 3)
If Number_Fix = 0 Then
If Number_Fraction > 0 Then
number = "0" & Number_Fraction
Else
number = "0"
End If
Else
If Number_Fraction > 0 Then
number = "" & Number_Fix & Number_Fraction
Else
number = "" & Number_Fix
End If
End If
Num_to_Str = number
Exit Function
opss:
ErrorMsg = ErrorMsg & Item & " " & "Error# " & Err & | - | & Lsi_info(2) & " - Line: " & Cstr(Erl) & " - " & Error$ & " "
Print ErrorMsg & "<br>"
End Function
-
Симпатично получилось)
По проблемным местам:
Для перекодировки POST-запроса можно в скрытом поле на форме использовать CGI-переменную Request_Content
и @URLDecode. Затем в агенте использовать это поле.
Для форматирования чисел можно использовать встроенную функцию Format(). Например, Format$(dblvar, "0.0##")
-
Намотал бы на ус ) но за неимением таковых пока повешаю на уши )
Format$(dblvar, "0.0##")
нормально отработает с числами ? проверять не охота ... поверю на слово %)
1000
10,01
0,1
,1
-
Отработает нормально:) Куда она денется
А на слово лучше не верить, а проверить ;)