foreach循环检索列表项并创建表

时间:2012-01-13 11:44:48

标签: c# sharepoint-2010 foreach listitem

我对如何在webpart中的两列中显示列表数据感到困惑。

这是我现在所拥有的(Webpart):

<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 个答案:

答案 0 :(得分:1)

使用Table控件之类的东西来构建表格会更加整洁和可维护。

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

然后在您的代码中使用TableRow和TableCell对象构建数据。

答案 1 :(得分:1)

没有什么可以在循环中描述你想要信息的表格的哪一边,所以我建议用你的循环

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

答案 2 :(得分:0)

使用Rows Property System.Web.UI.WebControls.Table。这意味着删除你的html标记并改为使用表格web控件。