2010-04-20 6 views
1
<asp:Repeater ID="rptrParent" runat="server"> 
<ItemTemplate> 
     <li> 
      <a href="<% =ResolveUrl("~/cPanel/UserView.aspx?User=")%><%# Eval("StudentUserName") %>"> 
       <span> 
        <% ProfileCommon pc = new ProfileCommon(); 
         pc.GetProfile(Eval("StudentUserName").ToString()); 
         Response.Write(pc.FirstName + "" + pc.LastName); 
        %> 
       </span> 
      </a> 
     </li> 
</ItemTemplate> 

en utilisant eval dans le code côté serveur sur la page asp.net

L'erreur suivante

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

vient dans cette partie

<% ProfileCommon pc = new ProfileCommon(); 
    pc.GetProfile(Eval("StudentUserName").ToString()); 
    Response.Write(pc.FirstName + "" + pc.LastName); 
%> 
+3

@The Roche : 'Eval' d'ASP.Net n'est pas ce que vous pensez que c'est. – SLaks

+0

Quelle est l'erreur que vous obtenez? – Luis

+0

Hey les gars, je sais que je peux obtenir la valeur en utilisant <% # Eval ("StudentUserName")%> Je veux obtenir le nom et le nom du profil de l'utilisateur à imprimer avec lui aussi. – Maverick

Répondre

0

gars bien, merci pour l'aide, mais je suis la solution:

<asp:Repeater ID="rptrParent" runat="server" onitemdatabound="rptrParent_ItemDataBound"> 
<ItemTemplate> 
     <li> 
      <a href="<% =ResolveUrl("~/cPanel/UserView.aspx?User=")%><%# Eval("StudentUserName") %>"> 
       <span> 
        <asp:Literal ID="lblUserName" runat="server"></asp:Literal> 
       </span> 
      </a> 
     </li> 
</ItemTemplate> 

et dans le code derrière le fichier, j'ai écrit la fonction suivante:

protected void rptrParent_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item) 
    { 
     Literal UserName = e.Item.FindControl("lblUserName") as Literal; 
     String uName = DataBinder.Eval(e.Item.DataItem, "StudentUserName").ToString(); 
     ProfileCommon pc = Profile.GetProfile(uName); 
     UserName.Text = pc.FirstName + " " + pc.LastName + " [ " + uName + " ]"; 
    } 
} 
4

Dans ce contexte, vous avez besoin du plein appelez comme ceci:

<%# Databinder.Eval(Container.DataItem,"StudentUserName") %> 
Questions connexes