2015-08-15 67 views
0

我的要求是我必須在頁面上顯示我的列表中的所有內容。功能列表並將其放入foreach

問題是,用我的代碼,它只顯示一件事情,不管它是什麼!

因此,我想知道發生了什麼問題,因爲它沒有顯示出更多的事情嗎?

default.aspx.cs

DataClassesDataContext db = new DataClassesDataContext(); 
List<ForslagOpslag> forslagopslag = db.ForslagOpslags.ToList(); 
foreach (ForslagOpslag item in forslagopslag) 
{ 
    //udskriver tekst på siden. 
    LabelText.Text = item.text; 
} 

Default.aspx的

<asp:Label ID="LabelText" runat="server"></asp:Label> 

它顯示只有一個FORWARD,它不顯示的其餘部分。

EIDT:

的Default.aspx/HTML

<asp:Label ID="LabelBrugernavn" runat="server"></asp:Label> 
<asp:Literal ID="LiteralLikesOpslag" runat="server"></asp:Literal> 
<asp:Literal ID="LiteralDelete" runat="server"></asp:Literal> 
<div style="margin-bottom: 5px; clear: both;"></div> 
<asp:Label ID="LabelText" runat="server"></asp:Label> 
<div style="margin-top: 5px; clear: both;"></div> 
<div class="col-md-12"> 
    <hr class="tall" style="margin:7px 0;"> 
</div> 

Default.aspx.cs

List<ForslagOpslag> forslagopslag = db.ForslagOpslags.ToList(); 
    foreach (ForslagOpslag item in forslagopslag) 
    { 
     //find ud af likes til forslaget. 
     var likesFjern = db.ForslagOpslagLikes.Where(a => a.fk_brugerid == Helper.ReturnBrugerId()).Count(); 

     //udskriver fornavn og efternavn 
     LabelBrugernavn.Text = item.brugere.fornavn + " " + item.brugere.efternavn; 

     //udskriver tekst på siden. 
     LabelText.Text = item.text; 

     //finder ud af om man har synes godt om forslag før. 
     if (likesFjern >= 1) 
     { 
      LiteralLikesOpslag.Text = "<a href='fjernsynesgodtom.aspx?id=" + item.Id + "&brugerid=" + Helper.ReturnBrugerId() + "' class='btn btn-danger btn-xs'>Fjern synes godt om</a>"; 
     } 
     else if (item.brugere.Id != Helper.ReturnBrugerId()) 
     { 
      LiteralLikesOpslag.Text = "<a href='SynesGodtOm.aspx?id=" + item.Id + "' class='btn btn-success btn-xs'>Like opslag - " + item.ForslagOpslagLikes.Count() + " synes godt om</a>"; 
     } 
     else 
     { 
      LiteralLikesOpslag.Text = "<p class='label label-lg label-success'>" + item.ForslagOpslagLikes.Count() + " synes godt om</p>"; 
     } 

     //slet opslag både admin og brugeren selv. 
     //giver det muligt for admin at kunne slette opslag. 
     if ((item.fk_brugerid == Helper.ReturnBrugerId() || Helper.BrugerRank(Helper.ReturnBrugerId()) == 1)) 
     { 
      LiteralDelete.Text = "<a href='slet.aspx?id=" + item.Id + "' class='btn btn-danger btn-xs'>Slet</a>"; 
     } 
    } 

回答

1

你總是重置標籤的文本,以便有效地,只顯示最後一個項目。

如果要顯示所有項目,則需要對它們進行簡化。

foreach (ForslagOpslag item in forslagopslag) 
    { 
     //udskriver tekst på siden. 
     LabelText.Text += item.text; 
    } 

請注意加號,以便對字符串進行協調。

UPDATE,呈現無序列表:

string list = "<ul>"; 

foreach (ForslagOpslag item in forslagopslag) 
{ 
    //udskriver tekst på siden. 
    list += "<li>" + item.text + "</li>"; 
} 

list += "</ul>"; 

placeholder.Controls.Add(new LiteralControl(list)); 

然後改變你的。aspx頁面並刪除標籤,添加此相反:

<asp:PlaceHolder runat="server" ID="placeholder" /> 
+0

它給一點點權利,但它在對方僅僅是在烤箱,我想它就像一個又一個正常的列表, 我不僅有文字被淘汰,我也有更多。 –

+0

標籤控件僅用於顯示簡單文本。如果你想渲染一個無序的HTML列表,你需要自己輸出HTML。 – HaukurHaf

+0

我不能像你展示它一樣。 –

0

您重置與每個新項目中的文本,使用StringBuilder來創建一個較長的字符串,或itemrepeater,這樣就可以顯示多個項目在一次

所以,用一個StringBuilder,你可以做到這樣:

StringBuilder allText = new StringBuilder(); 
foreach (ForslagOpslag item in forslagopslag) { 
    allText.AppendLine(item.text); 
} 
LabelText.Text = allText.ToString(); 

,或者您可以使用其他控件像一箇中繼器來一次顯示完整的數據集,具有模板,例如例如:

<asp:Repeater ID="itemRepeater" runat="server"> 
    <ItemTemplate> 
     <div><asp:Label ID="lblTest" runat="server" Text='<%#Bind("text")%>' /></div> 
    </ItemTemplate> 
</asp:Repeater> 

,並在後面的代碼,你可以把它添加到頁面加載事件,因爲這樣的:

itemRepeater.DataSource = forslagopslag; 
itemRepeater.DataBind(); 

這也可以讓你綁定到多個元素,或定義頁眉模板或只看到Repeater MSDN幫助頁面

+0

不幸的是,我無法按照你展示它的方式去做。 –