2012-01-13 4 views
0

ウェブパーツの2つの列にリストデータを表示する方法について少し混乱します。ここでリストアイテムを取得してテーブルを作成するための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>")); 
    */ 

} 

何を書くことです「賞」リストの詳細を2つの列に表示します。現在はすべて動作しますが、問題はデータがテーブルのcolum1とcolumn2で繰り返されていることです。理想的には、私は "foreach"がテーブルを作成し、リストから詳細を入力することを望んでいました。

多分私が見逃したことがあるかもしれませんが、私はそれが何であるか本当に見ることができません。どんな提案も高く評価されます。

+2

でこれをお勧めしたい –

+0

申し訳ありませんが、タイプミスを修正しました。 –

答えて

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

こんにちはPaul Leighさん、第1列目と第2列目の情報は同じです。つまり、どちらも「awardYear、awardCategory、awardOrganiser」と表示されます。つまり、リストの項目1が最初の列に表示され、リストの項目2が2番目の列に表示され、リストの項目3が列1の新しい行に表示されます。 ... –

+0

上記のコードはまさにあなたが必要とするものです。私がコメントを書いたリテラルコントロールを追加してください。 –

+0

ありがとうございました –

1

テーブルコントロールのようなものを使用してテーブルを構築すると、はるかにきれいでメンテナンスが容易になります。

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

次に、TableRowおよびTableCellオブジェクトを使用してデータを構築します。

関連する問題