Мне нужно отредактировать значение в поле SP Rich Text через элемент управления веб-браузера WinForms.Большинство других элементов управления (входные теги) легко получить, и мы можем изменить значение довольно просто.Однако не все так просто с Rich Text.Я направился к: http://blog.drisgill.com/2007_05_01_archive.html
и получил некоторые идеи.Сначала я попытался создать функцию javascript и добавить ее на страницу:
function GetRichTextRange(strBaseElementID)
var docEditor=RTE_GetEditorDocument(strBaseElementID);
if (docEditor == null)
{ return; }
var selection = docEditor.selection;
var range = selection.createRange();
return range;
}
Однако каждый раз, когда я вызываю это, я всегда получаю нулевое значение обратно.Поэтому я попробовал это вместо этого:
object docEditor = document.InvokeScript("RTE_GetEditorDocument", new object[] { fieldName });
IHTMLDocument2 doc = (IHTMLDocument2)docEditor;
IHTMLSelectionObject selection = doc.selection;
IHTMLTxtRange textRange = (IHTMLTxtRange)selection.createRange();
textRange.pasteHTML(value);
Что ж, теперь я получаю сообщение об ошибке во второй строке: «Невозможно привести объект типа« System.DBNull »к типу« mshtml.IHTMLDocument2 »
Я даже не уверен, что в любом случае приводю к нужному типу объекта, но в любом случае мне кажется, что функция, возвращаемая из функции RTE_GetEditorDocument, имеет System.DBNull.
Все, что я хочучтобы сделать, это сказать что-то вроде myRichTextHtmlElement.SetAttribute ("value", html);но это, очевидно, не может быть сделано.
Что еще хуже, я совершенно новичок в javascript и больше похож на парня из WinForms, так что мой HTML не совсем горячий материал.Ниже приведен HTML-код для моего поля RichText:
<tr>
<td nowrap="true" valign="top" width="190px" class="ms-formlabel">
<h3 class="ms-standardheader">
<nobr>RichText</nobr>
</h3>
</td>
<td valign="top" class="ms-formbody">
<!-- FieldName="RichText"
FieldInternalName="RichText"
FieldType="SPFieldNote"
-->
<span dir="none">
<div class='ms-rtestate-field ms-rtefield' style=''>
<div id='ctl00_m_g_29d60052_5630_4981_8452_850a87a50b56_ctl00_ctl05_ctl07_ctl00_ctl00_ctl04_ctl00_ctl00_TextField_inplacerte_label'
style='display:none'>Rich text editor
</div>
<div class=' ms-rtestate-write ms-rteflags-0'
id='ctl00_m_g_29d60052_5630_4981_8452_850a87a50b56_ctl00_ctl05_ctl07_ctl00_ctl00_ctl04_ctl00_ctl00_TextField_inplacerte'
style='min-height:84px'
aria-labelledby='ctl00_m_g_29d60052_5630_4981_8452_850a87a50b56_ctl00_ctl05_ctl07_ctl00_ctl00_ctl04_ctl00_ctl00_TextField_inplacerte_label'
contentEditable='true' >
<div class="ExternalClassD74B4D64D01941CDB34619757AAA30D8">
<html>
<body>
<h4>A Definition List:</h4>
<dl>
<dt>Coffee</dt>
<dd>Black hot drink</dd>
<dt>Milk</dt>
<dd>White cold drink</dd>
</dl>
</body>
</html>
</div>
</div>
<div style="clear:both;"></div>
</div>
<span dir="ltr">
<input name="ctl00$m$g_29d60052_5630_4981_8452_850a87a50b56$ctl00$ctl05$ctl07$ctl00$ctl00$ctl04$ctl00$ctl00$TextField_spSave"
type="HIDDEN"
id="ctl00_m_g_29d60052_5630_4981_8452_850a87a50b56_ctl00_ctl05_ctl07_ctl00_ctl00_ctl04_ctl00_ctl00_TextField_spSave" />
</span>
</span>
</td>
</tr>
У кого-нибудь есть идеи?Спасибо!