выдалась минутка ... наливаю кофе и пишу о своем решении )
Общий концепт.
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