2009-04-08 4 views
0

J'ai actuellement un Gridview qui afficheConvertir une colonne Gridview de l'ID en String dans ItemTemplate

TypeID, Nom, Description.

Je voudrais afficher le nom du type réel au lieu du TypeID dans la grille. J'ai créé cette fonction qui prend l'ID et renvoie le nom mais j'ai du mal à l'utiliser. Il y a 15-20 types différents. Comment puis-je convertir le TypeID en un Nom de type afin qu'il soit affiché lorsque le Gridview est rendu.

protected string GetGenericTypeByID(int genericTypeID) 
     { 
      string genericTypeName; 

      GenericType.Generic_TypeDataTable genericTypeNameDS = new GenericType.Generic_TypeDataTable(); 
      genericTypeNameDS = GenericBO.Get_GenericTypeByID(genericTypeID); 

      genericTypeName = genericTypeNameDS[0]["Generic_Type_Name"].ToString(); 









      return genericTypeName; 

     } 

Je pensais que je serais en mesure d'utiliser la fonction dans le ItemTemplate mais il semble être plus difficile que je pensais

<ItemTemplate> 
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("GetGenericTypeByID("Generic_Type_ID")")%>'></asp:Label> 
       </ItemTemplate> 

Merci à tous ceux qui m'a aidé à résoudre ce problème. J'ai fini par utiliser la méthode ci-dessous et cela fonctionne parfaitement. GetGenericTypeByID (Convert.ToInt32 (Eval (« Generic_Type_ID »)))

+0

Alors ... quelle est la question? – womp

Répondre

1

Vous avez l'appel 'bind/eval' et la méthode à l'envers.
Voir Using Method inside a DataGrid or GridView TemplateField

<asp:TemplateField HeaderText=”Name”> 
<ItemTemplate> 
    <a href='<%# FormatUrl(Eval(”email1″).ToString())%>'><%# Eval(”fname”) %>,&nbsp;<%# Eval(”lname”) %></a> 
</ItemTemplate> 

Avec l'être fonction 'FormatUrl':

public string FormatUrl(string email) 
{ 
    return “mailto:” + email; 
} 
0

Créer une propriété en lecture seule sur la classe de ligne que vous utilisez pour remplir la grille, et obtenir cette propriété pour retourner les résultats de votre fonction .

+0

Cela ne fonctionnera que si vous faites la liaison de données vers quelque chose comme une liste où T est votre classe de ligne. Si vous établissez une liaison de données avec un ensemble de données SQL, cela ne vous aidera pas beaucoup. – Chris

1

Êtes-vous limité à une balise d'étiquette? Si non, Expansion sur la réponse de David HAUST essayez ce qui suit:

<ItemTemplate> 
    <%#GetGenericTypeByID(Eval(Generic_Type_ID))%> 
</ItemTemplate> 
Questions connexes