Обновите RichTextBox на Sp2010 с помощью метода Windows Forms & ListService.UpdateListItems - PullRequest
0 голосов
/ 07 ноября 2011

У меня проблема с обновлением поля RichText в списке SharePoint 2010.

_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 через пакет agility, и он тоже просто не работает.

Что такое правильный метод или имя поля или что-то для обновления этого richtextbox?

мне нужен cdata? или что-то? Я очень смущен, и документация по MSDN не очень хороша для этого метода.

1 Ответ

0 голосов
/ 07 ноября 2011

Пропустите его через кодировку 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, это должно работать.Существуют и другие HTMLE-кодеры, которые могут быть лучше, чем WebUtility, но по большей части это должно работать, учитывая, что Agility Pack исправляет большую часть HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...