2009-08-20 11 views
1

J'ai un forum de discussion dans SharePoint 2007 dans lequel je veux voir toutes les discussions et leurs réponses sur la même page. Par exemple, j'ai 3 discussions au sein du forum de discussion et quelques réponses. Je veux quelque chose comme la sortie suivante à afficher sur une page:Comment afficher toutes les discussions et les réponses d'un forum de discussion sur SharePoint?

 
(+) discussion no. 1  replies:3 

(+) discussion no. 2  replies:1 

(+) discussion no. 3  replies:0 

et puis quand je clique sur expand (+), je veux voir toutes les réponses pour chaque discussion:

 
(-) 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 

Est-ce que quelqu'un sait comment s'y prendre?

Répondre

0

J'ai finalement trouvé le correctif pour cela. J'ai dû faire quelques changements dans la façon dont je faisais les choses. En particulier, la conversion de la valeur reçue de hex, doit être faite sans le préfixe 0x.

La clé est toujours d'envoyer la même valeur ThreadingIndex, après avoir appliqué une magie obscure avec elle. Voici le code que je utilise pour ajouter une réponse à une discussion en utilisant les services Web SharePoint api:

 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); 
     } 
    } 

espère que cela aide

Questions connexes