web-dev-qa-db-fra.com

Les méthodes de liaison de données telles que Eval (), XPath () et Bind () ne peuvent être utilisées que dans le contexte d'un contrôle de databound

Je reçois l'erreur suivante

Les méthodes de liaison de données telles que Eval (), XPath () et Bind () ne peuvent être utilisées que dans le contexte d'un contrôle de databound.

mais tout ce que j'essaie de faire est à l'intérieur d'un contrôle ASP.NET REPEATER

<% if ( Eval("Message").ToString() == HttpContext.Current.Profile.UserName) %>
<% { %>

           <asp:ImageButton runat="server" etc.... />
<% } %>
34
Dan

La syntaxe est

<%# Eval("...") %>

Vous pourriez faire quelque chose comme

<asp:ImageButton Visible='<%# ShowImg(Eval(Container.DataItem,"Message")) %>' />

et dans votre code derrière:

boolean ShowImg(string msg)
{
     return (msg == HttpContext.Current.Profile.UserName);
}
46
Steve

Une alternative est la suivante:

<asp:ImageButton runat="server" Visible='<%# Eval("Message").ToString() == HttpContext.Current.Profile.UserName %>' />

Ensuite, il n'y a pas besoin de code derrière.

27
Jen

C'est trop tard mais j'aimerais y répondre à ma manière, ce que j'ai utilisé pour y arriver:

<%# Eval("Message").toString()== HttpContext.Current.Profile.UserName)?"<asp:ImageButton runat="server" etc.... />" :""%>

Maintenant, cela ne montrera le bouton d'image que si Message est égal au nom d'utilisateur.

Cela pourrait aider quelqu'un d'autre dans la même situation.

Dans ma situation, je devais vérifier la chaîne vide et vide ... alors j'ai implémenté comme ceci ci-dessous:

<%# Eval("DateString")!= null && Eval("DateString")!= ""? "<span class='date'>"+Eval("DateString") + "</span>":"" %>

Merci

3
Rohit Arora

Une autre façon de l'implémenter:

public string nonImage() {
    string imgTag = "", Article_OwnerID = "", Article_ID = "", Article_OwnerType = "", imgSrc = "";
    DataTable DtArticles = SE_Article.GetArticlesList(UserID, UserID, ProfileType, CounterOfPage, CountPerPage, (short) SE_Action.OwnerType.user, SE_Security.CheckInjection(TxtSearch.Text.Trim()), CategoryID, "all_articles", DrpOrderBy.SelectedValue, DrpSort.SelectedValue);
    if (DtArticles != null && DtArticles.Rows.Count > 0) {
        Article_OwnerID = DtArticles.Rows[0]["Article_OwnerID"].ToString();
        Article_ID = DtArticles.Rows[0]["Article_ID"].ToString();
        Article_OwnerType = DtArticles.Rows[0]["Article_OwnerType"].ToString();
    }
    if (SE_Article.GetArticleCover(Convert.ToInt32(Article_OwnerID), Convert.ToInt32(Article_ID), Convert.ToInt16(Article_OwnerType)) != System.Configuration.ConfigurationManager.AppSettings["NoPhotoArticleThumb"]) {
        imgSrc = SE_Article.GetArticleCover(Convert.ToInt32(Article_OwnerID), Convert.ToInt32(Article_ID), Convert.ToInt16(Article_OwnerType));
        imgTag = "<img class='img_article_cover' src='" + imgSrc + "' alt='مقاله" + Article_ID + "' />";
    }
    return imgTag;
 }


 <% nonImage(); %>
1
Danial