цикл foreach для извлечения элементов списка и создания таблицы - PullRequest
0 голосов
/ 13 января 2012

Я немного озадачен тем, как отображать данные списка в двух столбцах веб-части.

Вот что у меня есть на данный момент (веб-часть):

<table width="100%">
  <tr>
    <td width="50%">
      <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    </td>
    <td width="50%">
      <asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>
    </td>
  </tr>
</table>

и код для него следующий:

foreach (SPListItem oListItem in listItemCollection)
{
    awardYear = oListItem["Year"].ToString();
    awardCategory = oListItem["Category"].ToString();
    awardOrganiser = oListItem["Organiser"].ToString();
    //awardNomWon = oListItem["NominatedWon"].ToString(); //not yet needed
    //need to fingure out how to display images:
    //awardLogo = oListItem["Logo"].ToString();

    //string mydatetime;
    //mydatetime = new DatTime(awardYear).ToString;

    //DateTime convertedaValue = DateTime.Parse(awardYear);
    //string awardYearConverted = convertedaValue.ToString();

    PlaceHolder1.Controls.Add(
        new LiteralControl(awardYear + " " + "|" + "<br/> " + 
                           awardCategory + " " + "|" + "<br/> " + 
                           awardOrganiser + " " + "|" + "<br/><br/>"));

    PlaceHolder2.Controls.Add(
        new LiteralControl(awardYear + " " + "|" + "<br/> " + 
                           awardCategory + " " + "|" + "<br/> " + 
                           awardOrganiser + " " + "|" + "<br/><br/>"));

    /*
    PlaceHolder2.Controls.Add(
        new LiteralControl("<table><tr><td>" + awardYear + "</td>" +
                           "<td>&#160;</td>" + "<td>" + 
                           awardCategory + "<br/>" +  
                           awardOrganiser + "</td></tr>" ));
    */

}

То, чего я пытаюсь добиться, - это написать детали из списка «Награды» и отобразить их в двух столбцах. В настоящее время все работает, но проблема в том, что данные повторяются в столбцах colum1 и column2 таблицы. В идеале я надеялся, что «foreach» создаст таблицу и заполнит ее деталями из списка.

Может быть, я что-то упустил, но я не могу понять, что это может быть. Любые предложения будут высоко оценены.

Ответы [ 3 ]

1 голос
/ 13 января 2012

В цикле нечего описывать, на какой стороне таблицы вы хотите получить информацию, поэтому я бы предложил это с вашим циклом

int modCounter = 0;
foreach (SPListItem oListItem in listItemCollection) 
{ 
    modCounter += 1;
    awardYear = oListItem["Year"].ToString(); 
    awardCategory = oListItem["Category"].ToString(); 
    awardOrganiser = oListItem["Organiser"].ToString(); 

    if(modCounter % 2 == 0) // If modCounter is divisible by 2 (ie even)
    {
         // Add information that goes in first column
    }
    else
    {
         // Add information that goes in second column
    }
} 
1 голос
/ 13 января 2012

Создание таблицы с использованием чего-то вроде элемента управления Table будет намного более аккуратным и обслуживаемым.

<asp:Table ID="MyTable" runat="server" />

Затем в вашем коде создайте данные, используя объекты TableRow и TableCell.

0 голосов
/ 13 января 2012

Использовать Свойство строк из System.Web.UI.WebControls.Table . Это означает, что удалите свою HTML-разметку и используйте вместо нее веб-элемент управления Table.

...