Как просмотреть все обсуждения и ответы доски обсуждений в SharePoint? - PullRequest
1 голос
/ 20 августа 2009

У меня есть доска обсуждений в SharePoint 2007, на которой я хочу просматривать все обсуждения и их ответы на одной странице. Например, у меня есть 3 обсуждения на доске обсуждений и несколько ответов. Я хочу, чтобы на странице отображалось что-то вроде следующего:

(+) discussion no. 1     replies:3 

(+) discussion no. 2     replies:1

(+) discussion no. 3     replies:0

и затем, когда я нажимаю на развернуть (+), я хочу просмотреть все ответы для каждого обсуждения:

(-) discussion no. 1      replies:3  

      (+) this is the reply to discussion no. 1

      (+) this is the 2nd reply to discussion no. 1

(+) discussion no. 2      replies:1

(+) discussion no. 3      replies:0

Кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 19 августа 2010

Я наконец нашел решение для этого. Я должен был сделать некоторые изменения в том, как я делал вещи. В частности, преобразование полученного значения из hex должно выполняться без префикса 0x.

Ключ по-прежнему заключается в отправке того же значения ThreadingIndex после применения некоторой неясной магии с ним. Вот код, который я использую для добавления ответа на обсуждение с помощью API веб-служб SharePoint:

        String trimmedBody = itemNode.Attributes.GetNamedItem("ows_BodyAndMore").Value;
        String threadIndex = itemNode.Attributes.GetNamedItem("ows_ThreadIndex").Value;

        StringBuilder mesBody = new StringBuilder(1024);

        mesBody.AppendFormat("Message-ID: {0}\n", Guid.NewGuid().ToString());

        threadIndex = threadIndex.Substring(2);
        byte[] byteArray = FromHex(threadIndex);                        
        threadIndex = base64Encode(byteArray);
        string encoded = threadIndex;

        mesBody.AppendFormat("Thread-Index: {0}\n", encoded);
        mesBody.AppendFormat("Subject: {0}\n", title); //the ows_Title of the discussion - messages don't always have titles...
        mesBody.Append("Mime-Version: 1.0\n");
        mesBody.Append("Content-type: text/html; charset=UTF-8\n\n");
        mesBody.Append(body);
        mesBody.Append(trimmedBody);
        client.AddDiscussionBoardItem(ListName, Encoding.UTF8.GetBytes(mesBody.ToString()));

    public static byte[] FromHex(string hex)
    {
        hex = hex.Replace("-", "");
        byte[] raw = new byte[hex.Length / 2];
        for (int i = 0; i < raw.Length; i++)
        {
            raw[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
        }
        return raw;
    }

    public string base64Encode(byte[] data)
    {
        try
        {
            byte[] encData_byte = data;
            string encodedData = Convert.ToBase64String(encData_byte);
            return encodedData;
        }
        catch (Exception e)
        {
            throw new Exception("Error in base64Encode" + e.Message);
        }
    }

надеюсь, это поможет

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