Notesrichtextparagraphstyle

  • Автор темы Автор темы 11BOSS11
  • Дата начала Дата начала
turumbay
Спасибо за код. .........
надо поковырять будет всеми вами любимый DXL <_< .........





Добавлено: а в в этом коде возможно исправить, чтобы копилась 2 строка таблици(из 3х во всех случаях),а не последняя , и втсавлялась не в конец таблици , а после 2й.......?
 
11BOSS11
в DXML можно всё - вообще всё <_<
даже форму нарисовать :ithx:
 
тю........ а я не знал что DXL можна обрабатывать на месте, ................



Добавлено: если бы еще ктото помог изменить код так чтобы копило 2ю строку и добавляло не в конец а после 2й........ - вообще бы цены не было этому коду..............
 
если бы еще ктото помог изменить код так чтобы копило 2ю строку и добавляло не в конец а после 2й........ - вообще бы цены не было этому коду..............
а в кассу за зарплатой вместе с "ктото" пойдете? ;-)
сохраняете последнюю ( третью ) строку во временный domNode, удаляете ее из дерева документа. Далее по предложенной схеме клонируете последнюю строку, и добавляете ранее сохраненный футер.
 
я пытаюсь сделать както так:
- беру предыдущую последней строке,.
а вот как ее приапендить не в конец а после этой же самой строки(после той с которой взято форматирование..)......?

Код:
Private Sub addRowToTable( table As notesDOMNode )
Dim clonedLastRow As NotesDOMNode 
Dim clonedPrevLastRow As NotesDOMNode 
Set clonedLastRow = table.LastChild.clone( True ) ' table.LastChild - последняя строка(tablerow) в таблице
Set clonedPrevLastRow=clonedLastRow.PreviousSibling
Call clearAllText( clonedPrevLastRow)
Call table.AppendChild( clonedPrevLastRow )
End Sub
 
так тоже не получается, дальше в скрипте ошибку выбрасывает:

Код:
Private Sub addRowToTable( table As notesDOMNode )
Dim clonedLastRow As NotesDOMNode 
Dim clonedPrevLastRow As NotesDOMNode 
'Set clonedLastRow = table.LastChild.clone( True ) ' table.LastChild - последняя строка(tablerow) в таблице
Set clonedPrevLastRow=table.LastChild.PreviousSibling.Clone(False)
Call clearAllText( clonedPrevLastRow)
Call table.AppendChild( clonedPrevLastRow )
End Sub
 
я пытаюсь взять предшествующую последней строке, Set clonedPrevLastRow=clonedLastRow.PreviousSibling но почемуто не находит ее!
хм,. если выгрузить во внешний XML то там со всеми tablerow порядок.......
может я как то не так беру..........

Код:
Private Sub addRowToTable( table As notesDOMNode )
Dim clonedLastRow As NotesDOMNode 
Dim clonedPrevLastRow As NotesDOMNode 
Dim clonedPrevLastRow1 As NotesDOMNode
a=table.NodeType
b=table.NodeValue
c=table.NodeName
Set clonedLastRow = table.LastChild.clone( True ) ' table.LastChild - последняя строка(tablerow) в таблице
a=clonedLastRow.NodeType
b=clonedLastRow.NodeValue
c=clonedLastRow.NodeName	
d=clonedLastRow.HasChildNodes
Set clonedPrevLastRow=clonedLastRow.PreviousSibling
Set clonedPrevLastRow1= clonedPrevLastRow.Clone(True)
Call clearAllText( clonedPrevLastRow)
Call table.AppendChild( clonedPrevLastRow)
End Sub
 
я пытаюсь взять предшествующую последней строке, Set clonedPrevLastRow=clonedLastRow.PreviousSibling но почемуто не находит ее!
походу клонированный узел не содержится в DOM и ничего не знает о иерархии. prevSibling нужно брать от узла из DOM:
Код:
Set templateRow = table.LastChild.PreviousSibling ' шаблонная строка - предпоследняя в таблице
Set clonedRow = templateRow.clone( true )
 
походу клонированный узел не содержится в DOM и ничего не знает о иерархии. prevSibling нужно брать от узла из DOM:
Код:
Set templateRow = table.LastChild.PreviousSibling ' шаблонная строка - предпоследняя в таблице
Set clonedRow = templateRow.clone( true )


таким макаром тоже не видит......

Добавлено: так а что кроме Ласт, Фест н ичего не получится взять........?
 
таким макаром тоже не видит......
а дебагер запустить ( или в файл выгрузить ) и посмотреть DOM - религия не позволяет? лотус добавил текстовый узел между tablerow. Фиксируем так:
Код:
Set templateRow = table.LastChild.PreviousSibling
While templateRow.NodeName <> "tablerow"
Set templateRow = templateRow.PreviousSibling	
Wend
 
а дебагер запустить ( или в файл выгрузить ) и посмотреть DOM - религия не позволяет? лотус добавил текстовый узел между tablerow. Фиксируем так:
Код:
Set templateRow = table.LastChild.PreviousSibling
While templateRow.NodeName <> "tablerow"
Set templateRow = templateRow.PreviousSibling	
Wend

оуу!! круто..... чтото я не заметил тау лишнего узла.........=)

сказал бы спасибо , но немугу .....[7дн.] :)

Добавлено: а чтобы апендило не в конец талбици, а после этой же строки с которую клонировали?? :unsure: !!
 
а чтобы апендило не в конец талбици, а после этой же строки с которую клонировали??
метод insertBefore индусы реализовать забыли. под конкретную задачу сойдет так: <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">как-то так</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='типа код vbscript'>' ищем строку-шаблон
Dim templateRow As NotesDOMNode
Set templateRow = table.LastChild.PreviousSibling
While templateRow.NodeName <> "tablerow"
Set templateRow = templateRow.PreviousSibling
Wend
' клонируем ее и чистим содержимое
Dim clonedRow As NotesDOMNode
Set clonedRow = templateRow.Clone(True )
Call removeText( clonedRow )
' убираем футер и добавляем строку-клон.
Dim footerRow As NotesDOMNode
Set footerRow = table.RemoveChild( table.LastChild )
Call table.AppendChild( clonedRow )
' цепляем футер на место
Call table.AppendChild( footerRow )[/CODE]
 
метод insertBefore индусы реализовать забыли. под конкретную задачу сойдет так: <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">как-то так</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='типа код vbscript'>' ищем строку-шаблон
Dim templateRow As NotesDOMNode
Set templateRow = table.LastChild.PreviousSibling
While templateRow.NodeName <> "tablerow"
Set templateRow = templateRow.PreviousSibling
Wend
' клонируем ее и чистим содержимое
Dim clonedRow As NotesDOMNode
Set clonedRow = templateRow.Clone(True )
Call removeText( clonedRow )
' убираем футер и добавляем строку-клон.
Dim footerRow As NotesDOMNode
Set footerRow = table.RemoveChild( table.LastChild )
Call table.AppendChild( clonedRow )
' цепляем футер на место
Call table.AppendChild( footerRow )[/CODE]
:) Спасибо огромное!!! все четко!!

а я еще пытался чтото мудрить с ReplaceChild ...........
 
а я еще пытался чтото мудрить с ReplaceChild ...........
у replaceChild в сигнатуре два параметра в неочевидном порядке. мне показалось менее читаемо, хотя и короче<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">replaceChild</div></div><div class="sp-body"><div class="sp-content">
Код:
' убираем футер и добавляем строку-клон. 
Dim footerRow As NotesDOMNode
Set footerRow = table.ReplaceChild( clonedRow , table.LastChild )
' цепляем футер на место
Call table.AppendChild( footerRow )
 
вопрос к turumbay , если ему конечно не надоело еще мне помогать :happy: .......:

вот делаю такие действия, и окрываю в ЮИ этот док.
собственно вопрос: "Почему в юи открывается не обработанный док?"
потом закрываешь док в юи, заходишь в док, и он там еже обработанный........
сохранение не помогает, компютевизформ вобще не работает..........
;)

Код:
 ' засасываем результат обратно в виде нового документа.
Dim importer As NotesDXLImporter
Set importer = session.CreateDXLImporter
Call domParser.setOutput( importer )
Call importer.setOutput( doc.ParentDatabase )
importer.DocumentImportOption = DXLIMPORTOPTION_REPLACE_ELSE_IGNORE

'Call importer.setOutput( doc)
domParser.Serialize
Call importer.Import	
Dim ws As New NotesUIWorkspace
'Call doc.ComputeWithForm(False, False)
'Call doc.Save(True, True)

Call ws.editdocument( True, doc)
 
вот делаю такие действия, и окрываю в ЮИ этот док.
собственно вопрос: "Почему в юи открывается не обработанный док?"
потом закрываешь док в юи, заходишь в док, и он там еже обработанный........
doc закэширован и указывает на "старую" версию. лечица это убиением объекта документа с последующим переполучением из БД
Dim unid As String
unid = doc.UniversalID
delete doc
Set doc = db.getDocumentByUNID( unid )
 
doc закэширован и указывает на "старую" версию. лечица это убиением объекта документа с последующим переполучением из БД
Dim unid As String
unid = doc.UniversalID
delete doc
Set doc = db.getDocumentByUNID( unid )


ОЙ СПАСИБКИ!!! =) ;)
интересная ситуация... я так и думал, но не знал ка убить объект...........
 
мда... долог путь к истинным заниям... ;) (а скока уламывали на ДХЛ)
а еще есть XSLT, кот. тоже позволяет подобные фокусы, но только без прогания на ч-л, за исключением XSL :happy:
короче - 11BOSS11, учите ХМЛ
 
мда... долог путь к истинным заниям... :happy: (а скока уламывали на ДХЛ)
а еще есть XSLT, кот. тоже позволяет подобные фокусы, но только без прогания на ч-л, за исключением XSL ;)
короче - 11BOSS11, учите ХМЛ

та да! , это все хорошо конечно, но маленькие нюансы все же есть :
- DXL при имипорте сохраняет документ, на что прав доступа у юзеря может не быть.......вот.......
;)
 
- DXL при имипорте сохраняет документ, на что прав доступа у юзеря может не быть.......вот.......
Проблему решает серверный агент, подписанный сервером.
К тому же совсем не обязательно рисовать в рт-поле "лотусовую" таблицу. Можно сформировать html и cконвертировать в mime.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!