2013-07-10 4 views
0

Я хотел бы пройти через таблицу, которую я создал с помощью кода C# и отображения данных, извлеченных из списка Sharepoint, который был отформатирован в таблице. Это код, который я придумал:Программно заполняемые ячейки таблицы 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); 
     } 
    } 

Этот код в настоящее время переписывает одну и ту же запись в каждой ячейке. Я бы хотел, чтобы он отобразил шесть записей, которые извлекаются из списка Sharepoint.

+0

Самое простое решение для отладки, чтобы написать все HTML в строке и когда вы завершили loop скопируйте данные из строки и вставьте их в html-файл (текстовый файл, сохраненный как html). Затем просмотрите html, и вы обнаружите, что ошибаетесь. – Ehsan

ответ

0

Если вы хотите отобразить две строки из 3-х ячеек, вы не должны ставить foreach.

На внутренней стороне второго контура, вы можете сделать ссылку непосредственно на элемент в списке:

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

Где в моем коде я должен поместить эту строку кода. Также это позволит мне удалить последние 6 строк списка sharepoint. – user2567387

+0

во втором цикле: – Rems

Смежные вопросы