2010-04-03 28 views
30

aşağıdaki hataveri bağlama yöntemleri sadece) (veri sınırlama kontrol

örneğin Eval olarak

veri bağlama yöntemleri alma am bağlamında kullanılabilir XPath() ve Bind(), yalnızca bir veri denetimi denetimi kapsamında kullanılabilir.

ama yapmaya çalışıyorum hepsi bir ASP.NET TEKRARLAYICI Kontrol içindedir

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

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

cevap

42

sözdizimi

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

Sen gibi bir şey yapabileceğini olduğunu

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

ve kodunuzda:

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

güzel

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

Teşekkür: benim durum i geçersiz ve boş bir dize denetlemek için gerekli ise

... bu yüzden aşağıda böyle uyguladı. Ben bir cevap için online arama yaparken ben de geldi ama proje yanıtı için teşekkürler görülemez – Dan

+0

Serin o işe yaradı ... teşekkürler Dan

+0

Evet, Container.DataItem dosyasını dışarıda bırakabilirsiniz, bkz. Http://msdn.microsoft.com/en-us/library/system.web.ui. databinder.eval.aspx – Steve

28

alternatifşudur:

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

Sonra arkasında kod için gerek yoktur.

+0

İşleri Harika. Bunu bir If ifadesi yerine bile kullanabilirsiniz. Sadece bu kontrollerden ikisini Görünür parametrelerle bir = = ve diğeri olarak! = (Veya mantıksal olarak ne olursa olsun) koyunuz. – Ruan

1

başka yolu da bunu uygulamak için:

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(); %> 
2

Onun çok geç ama benim bir şekilde cevap vermek istiyorum, ben eskiden ne bunu başarmak için:

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

Şimdi bu irade sadece gösteri Mesaj, kullanıcı adıyla eşitse resim düğmesi.

Bu, aynı durumdaki herhangi bir kişiye yardımcı olabilir. Ben bu çözümü gibi ama Container.DataItem nedir,

İlgili konular