Мне нужно изменить значение в поле Rich Rich Text с помощью элемента управления веб-браузером WinForms. Большинство других элементов управления (входных тегов) легко получить, и мы можем легко изменить значение. Однако, не очень просто с Rich Text. Я направился в: http://blog.drisgill.com/2007_05_01_archive.htmlВходные данные в SharePoint RichText Управление с помощью WinForms Управление WebBrowser
и получил некоторые идеи. Сначала я попытался creatign в яваскрипте функции и добавить его на страницу:
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"
I я даже не уверен, что в любом случае я верю в правильный тип объекта, но в любом случае кажется, что я возвращаюсь из функции 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>
У кого-нибудь есть идеи? Благодаря!
Другая вещь, которая только что перешла мне на ум; Я предполагаю, что «strBaseElementID» - это имя поля SP. В этом случае я передаю имя «RichText», которое является именем моего тестового поля RichText. Это даже то, что я должен проезжать или что-то еще? Название звучит немного странно, и я также попытался передать атрибут HtmlElement.ID, но безрезультатно ...: -s – Matt