Общие вопросы > Разработка приложений

View - Расширенные возможности

<< < (2/3) > >>

ViV:
Если сам формируешь HTML, то такого не будет.

CL1F:
не понял ....

для вьюшки создаем шаблон  ... шапку описываем в шаблоне ...
вьюшку садим ... если так то ползет обязательно

расскажи о своем варианте

ViV:
Можно, к примеру, агентом весь вид формировать.
Т.е. на форме, на WebQueryOpen работает агент, который формирует шапку,  бегает по нужному виду, собирает данные, обертывает их в теги, полученный код пишет в ричтекстовое поле на форме. При загрузке форма отображает сформированный HTML из поля.

CL1F:
интересная мысль ... попробую реализовать ... но у нас сегодня закрытие периода ... так что не сразу выложу результат  ...

CL1F:
выдалась минутка ... наливаю кофе и пишу о своем решении )

Общий концепт.
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
--- Конец кода ---

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии