2012-01-13 105 views
0

我有點困惑,以至於如何顯示webpart中兩列的列表數據。foreach循環來檢索列表項並創建一個表

這是我目前所面對的(Web部件):

<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」將創建表格並使用列表中的詳細信息填充表格。

有可能是我錯過了,但我真的不能看到那可能是什麼。任何建議將不勝感激。

+2

請表現出一定的尊重,你的問題 – 2012-01-13 11:54:16

+0

修復拼寫錯誤對不起,修正了錯別字。 – 2012-01-13 12:00:35

回答

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

嗨保利,第一和第二列的信息是布萊恩是相同的,即他們都會顯示「獎年,獎類別,awardOrganiser」只有我希望它顯示在兩列因此我用了一張桌子。換句話說,列表中的項目1將顯示在第一列中,列表中的項目2將顯示在第二列中,列表中的項目3將顯示在列1中的新行中,以此類推。 ... – 2012-01-13 14:15:25

+0

然後上面的代碼正是你所需要的。在我提出評論的地方添加您的文字控件。 – 2012-01-13 16:41:00

+0

非常感謝你的工作 – 2012-01-16 18:07:52

1

使用諸如Table控件之類的東西來構建你的表格會更加整潔和可維護。

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

然後在您的代碼中使用TableRow和TableCell對象構建數據。