2015-09-27 34 views
0

這是我將如何瞭解我的真假,我會做我的直放站。必須在我的直放站有一個IF

如果我的喜歡是假的,那麼顯示內容。但如果它是真的,那麼頁面上的顯示內容。

現在讓這個錯誤:

Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

<asp:Repeater ID="RepeaterReport" runat="server"> 
    <ItemTemplate> 
    <%--I have much more different content here.--%> 
    <% if (Convert.ToBoolean(Eval("like")) != true) 
     { %> 
     <a href="../mentor/report.aspx?like=<%# Eval("IdBesked") %>" class="btn btn-success mr-xs mb-sm"> 
     <i class="fa fa-thumbs-up"></i>Synes godt om 
     </a> 
    <% } %> 
    <%--I have much more different content here.--%> 
    </ItemTemplate> 
</asp:Repeater> 

錯誤的位置:

<% if (Convert.ToBoolean(Eval("like")) == false) {%> 

選擇數據:

var MentorBeskedReport = from mb in db.MentorBeskeds 
          where mb.Id == beskedId && mb.Til_BrugerId == Helper.ReturnBrugerId() && mb.godkendt == true && mb.opretdato < months 
          select new 
          { 
           IdBesked = mb.Id, 
           Navn = mb.brugere.fornavn + " " + mb.brugere.efternavn, 
           dag = mb.opretdato, 
           tekst = mb.tekst, 
           like = mb.like // Bit in database TRUE/FALSE 
          }; 


    if (MentorBeskedReport != null) 
    { 
     //Report 
     RepeaterReport.DataSource = MentorBeskedReport.ToList().OrderByDescending(i => i.IdBesked); 
     RepeaterReport.DataBind(); 
    } 

回答

1

的問題是,你使用的Eval裏面的方法n if聲明。

您應該將您的a標籤更改爲runat=server並給它一個ID。然後,而不是做你.aspx文件中的驗證,你應該.aspx.cs添加ItemDataBound事件,並檢查它:

<asp:Repeater ID="RepeaterReport" ItemDataBound="RepeaterReport_ItemDataBound" runat="server"> 
    <ItemTemplate> 
     <a id="myAnchor" runat="server" href="../mentor/report.aspx?like=<%# Eval("IdBesked") %>" class="btn btn-success mr-xs mb-sm"> 
     <i class="fa fa-thumbs-up"></i>Synes godt om 
     </a> 
    </ItemTemplate> 
</asp:Repeater> 

public void RepeaterReport_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     if (Convert.ToBoolean(DataBinder.Eval(e.Item.DataItem, "like")) != true) 
     { 
      ((HtmlControl)e.Item.FindControl("myAnchor")).Visible = false; 
     } 
    } 
} 
+0

這將是非常困難的時候我拉我的數據了與做LINQ。 –

+0

@NickWillumsen爲什麼? – Buzinas

+0

我現在更新我的問題:) –

相關問題