使用Windows窗体更新Sp2010上的RichTextBoxListService.UpdateListItems方
本文关键字:RichTextBoxListService UpdateListItems 上的 Sp2010 Windows 窗体 更新 使用 | 更新日期: 2023-09-27 18:13:36
我在更新SharePoint 2010列表中的RichText框时遇到问题。
_batchElement.InnerXml =
string.Format(
"<Method ID='1' Cmd='New'><Field RichText='True' Name='Other_x0020_Items_x0020_of_x0020'>{0}</Field><Field Name='Overall_x0020_rating_x0020_of_x0'>{1}</Field><Field Name='Do_x0020_you_x0020_wish_x0020_to'>{2}</Field></Method>",
add_Report_Details.Rtf,
arrText,
addreportwish);
触发更新的代码:
ListService.UpdateListItems(ListName, _batchElement);
但是,考虑到这个xml元素不能有任何以'
开头的内容,它不想工作。
我也尝试过HTML,甚至通过敏捷包传递HTML,但它也不起作用。
什么是正确的方法或字段名或什么东西来更新那个richtextbox?
我需要一个cdata
吗?还是什么?我很困惑,MSDN上的文档对这个方法不是很好。
通过HTML编码传递它,它似乎工作得很好:
private static string SetProperHTML(string sHtml)
{
var sb = new StringBuilder();
var stringWriter = new StringWriter(sb);
string input = sHtml;
var test = new HtmlAgilityPack.HtmlDocument();
test.LoadHtml(input);
test.OptionOutputAsXml = false;
test.OptionCheckSyntax = true;
test.OptionFixNestedTags = true;
test.OptionAutoCloseOnEnd = true;
test.OptionWriteEmptyNodes = true;
test.Save(stringWriter);
Console.WriteLine(sb.ToString());
return WebUtility.HtmlEncode(sb.ToString().Replace(Environment.NewLine, ""));
}
还需要确保您的field
描述符设置正确:
_batchElement.InnerXml =
string.Format(
"<Method ID='1' Cmd='New'><Field Name='Other_x0020_Items_x0020_of_x0020'>{0}</Field><Field Name='Overall_x0020_rating_x0020_of_x0'>{1}</Field><Field Name='Do_x0020_you_x0020_wish_x0020_to'>{2}</Field></Method>",
SetProperHTML(add_Report_Details.Document.Body.InnerHtml),
arrText,
addreportwish);
和其他字段一样,不需要特殊的子标签。只要将表单上的Sp2010字段设置为100%完整的HTML,就应该可以工作。还有其他的HTMLEncoders在那里,这可能比WebUtility
更好,但在大多数情况下,这应该工作,鉴于敏捷包修复了大部分的HTML。