2013-07-10 7 views
0

Je voudrais parcourir une table que j'ai créée en utilisant le code C# et afficher les données extraites d'une liste Sharepoint qui a été formatée dans un tableau. Voici le code que je suis venu avec:Remplissage par programmation des cellules du tableau html

protected override void RenderContents(HtmlTextWriter output) 
    { 
     try 
     { 
      SPSite thisSite = SPControl.GetContextSite(Context); 
      using (SPWeb topWeb = thisSite.OpenWeb("/")) 
      { 
       SPList newsList = topWeb.Lists["Headlines"]; 
       SPQuery query = new SPQuery(); 
       query.ExpandRecurrence = true; 
       query.Query = NewsListCamlQuery; 
       query.RowLimit = 2; 
       SPListItemCollection coll = newsList.GetItems(query); 

       output.Write("<table border='0' style='width: 100%;'><tbody>"); 

       for (int i = 0; i < 2; i++) 
       { 
        output.Write("<tr>"); 

        for (int j = 0; j < 3; j++) 
        { 
         output.Write("<td>"); 

         foreach (SPListItem item in coll) 
         { 
          int newsID = int.Parse(item.ID.ToString()); 

          output.Write("<hr/>"); 
          output.Write("<table style='width: 100%; height: 143px;'><tbody>"); 
          output.Write("<tr><td valign='top'><h4>"); 
          output.Write(item["Title"].ToString()); 
          output.Write("</h4></td></tr>"); 
          output.Write("<tr><td valign='top'><h4 class='ms-rteElement-H4B'><span style='font-size: 8pt;'>"); 
          output.Write(item["Sub_x0020_Heading"].ToString()); 
          output.Write("</span></h4></td></tr>"); 
          output.Write("<tr><td valign='top'><span style='font-size: 8pt;'>"); 
          output.Write("<img class='image' src='"); 
          //output.Write(item["Photo"].ToString()); 
          output.Write("' Width='64px' Height='48px' Border='0' alt='' style='margin: 5px;'/>"); 
          output.Write(item["Details"].ToString()); 
          output.Write("</span></td></tr>"); 
          output.Write("<tr><td valign='top'>"); 
          output.Write("<a class='mt-linkMore' href='/Lists/Headlines/DispForm.aspx?ID="); 
          output.Write(newsID); 
          output.Write("' <span style='font-size: 6pt;'>Read More</span></a></td></tr>"); 
          output.Write("</tbody></table>"); 
         } 

         output.Write("</td>"); 
        } 

        output.Write("</tr>"); 
       } 

       output.Write("</tbody></table>"); 
      } 
     } 
     catch (Exception exception) 
     { 
      output.Write("Error : " + exception.Message); 
     } 
    } 

Ce code est à nouveau en train d'écrire le même enregistrement dans chaque cellule. J'aimerais qu'il affiche les six enregistrements extraits de la liste Sharepoint.

+0

La solution la plus simple à déboguer est d'écrire tout le code HTML dans une chaîne et quand vous avez terminé la loop copie les données de la chaîne et les colle dans un fichier html (fichier texte enregistré en html). Puis voir le code HTML et vous trouverez où vous allez mal. – Ehsan

Répondre

0

Si vous voulez afficher deux lignes de 3 cellules, vous ne devriez pas mettre le foreach.

À l'intérieur de la deuxième boucle, vous pouvez faire référence directement à l'élément de votre liste:

for (int i = 0; i < 2; i++) 
{ 
    output.Write("<tr>"); 

    for (int j = 0; j < 3; j++) 
    { 
     output.Write("<td>"); 

     int index; 
     if (i = 0) 
      index = j; 
     else 
      index = j + 3; 

     SPListItem item = coll[index]; 
     int newsID = int.Parse(item.ID.ToString()); 
     ... 
+0

Où dans mon code dois-je placer cette ligne de code. Cela me permettra également de récupérer les 6 dernières lignes d'une liste de points de partage. – user2567387

+0

dans la deuxième boucle: – Rems

Questions connexes