2015-09-27 2 views
0

Вот как я узнаю про себя как истину или ложь, и я сделаю свой повторитель.должен иметь IF в моем ретрансляторе

Если мне нравится false, то содержимое дисплея. но если это правда, то отображаемый контент на странице.

Прямо сейчас делает эту ошибку:

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, вы должны добавить ItemDataBound событие и проверить его на .aspx.cs:

<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

У меня есть обновленный запрос: –