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

C# foreach循环检索列表项并创建表,c#,sharepoint-2010,foreach,listitem,C#,Sharepoint 2010,Foreach,Listitem,对于如何在一个Web部件的两列中显示列表数据,我有点困惑 以下是我目前拥有的(网页部分): 其背后的代码如下所示: foreach (SPListItem oListItem in listItemCollection) { awardYear = oListItem["Year"].ToString(); awardCategory = oListItem["Category"].ToString(); awardOrganiser = oListItem["Org

对于如何在一个Web部件的两列中显示列表数据,我有点困惑

以下是我目前拥有的(网页部分):


其背后的代码如下所示:

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>" ));
    */

}
foreach(listItemCollection中的SPListItem oListItem)
{
awardYear=oListItem[“Year”]。ToString();
awardCategory=oListItem[“Category”].ToString();
awardOrganizer=oListItem[“Organizer”].ToString();
//awardNomWon=oListItem[“NominatedWon”]。ToString();//尚不需要
//需要找出如何显示图像:
//awardLogo=oListItem[“Logo”].ToString();
//字符串mydatetime;
//mydatetime=新的日期时间(奖励年).ToString;
//DateTime ConvertedValue=DateTime.Parse(获奖年份);
//字符串awardYearConverted=convertedValue.ToString();
占位符1.Controls.Add(
新的LiteralControl(awardYear++“|”+”
“+ 获奖类别+“+”+“|“+”
“+ 获奖组织者+“+”|“+”

); 占位符2.Controls.Add( 新的LiteralControl(awardYear++“|”+”
“+ 获奖类别+“+”+“|“+”
“+ 获奖组织者+“+”|“+”

); /* 占位符2.Controls.Add( 新的文字控制(“+awardYear+”)+ " " + "" + 获奖类别+“
”+ 获奖组织者+”); */ }
我试图实现的是从“奖励”列表中写入详细信息,并将其显示在两列中。目前一切正常,但问题是数据在表的第1列和第2列中重复。理想情况下,我希望“foreach”将创建表并用列表中的详细信息填充它


也许我错过了一些东西,但我真的看不出那是什么。如果您有任何建议,我们将不胜感激。

使用表格控件之类的工具构建表格将更加整洁和易于维护

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


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

使用。这意味着删除html标记,改用表web控件。

在循环中没有任何东西可以描述您希望信息位于表的哪一侧,因此我建议您在循环中使用此选项

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

请尊重并纠正问题中的拼写错误嗨,Paul Leigh,第一列和第二列的信息将是相同的,即它们都将显示“awardYear,awardCategory,AwardOrganizer”,只是我希望它显示在两列中,因此我使用了表格。换句话说,列表中的项目1将显示在第一列中,列表中的项目2将显示在第二列中,列表中的项目3将显示在第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
    }
}