2009-05-28 11 views
0

Je souhaite afficher uniquement 100 caractères dans Gridviews ItemTemplate. Lorsque je clique sur le bouton Modifier, je veux afficher toute la valeur liée avec EditItemTemplate.Étiquette ItemTemplate dans Gridview

<ItemTemplate> 

<asp:Label ID="Label2" runat="server" Text='<%# Bind("Address") %>'> </asp:Label> 

</ItemTemplate> 

Comment limiter le texte de l'étiquette à 100 caractères?

Répondre

2

Puisque vous travaillez dans ItemTemplate, vous n'avez pas vraiment besoin d'utiliser Bind(). Vous pouvez utiliser eval() au lieu et faire quelque chose comme:

<%# Eval("Address").ToString().Substring(0, 100) %> 

Il y a deux problèmes avec une telle solution simple:

La première est lorsque le champ d'adresse est nulle, vous devez faire un chèque de cette. La seconde est que si la chaîne est inférieure à 100 caractères, elle échouera également puisque .NETs Substring() essaie de s'assurer que vous obtenez toujours exactement 100 caractères et lève une exception si la chaîne est plus courte. Donc, vous devriez ajouter du code pour vous assurer que vous avez vraiment besoin de couper la chaîne.

Et maintenant, il se sent comme peut-être que nous devrions faire une petite méthode d'aide à la place:

public static class Extensions 
{ 
    public static String Limit(this String s, int length) 
    { 
     if (s == null) 
      return String.Empty; 

     return s.Substring(0, Math.Min(s.Length, length)); 
    } 
} 

Ensuite, la déclaration Eval ressemblera:

<%# ((string)Eval("Address")).Limit(100) %> 

(Cela suppose que Adresse est vraiment un chaîne)

+0

désolé .. erreur s'est produite: Erreur 'objet' ne contient pas une définition de 'SubString' et aucune méthode d'extension 'SubString' accepter Un premier argument de type 'object' pourrait être trouvé (manque-t-il une directive using ou une référence d'assembly?) – Jack

+0

Je ne suis pas sûr de ce que retourne Eval. Essayez de faire un .ToString(). Substring (0, 100) à la place. Et, oui, il n'y a pas de majuscule sur String, juste une faute de frappe. – Ostemar

+0

"La méthode Eval prend le nom d'un champ de données et renvoie une chaîne contenant la valeur de ce champ de l'enregistrement en cours dans la source de données." - à partir de http://msdn.microsoft.com/en-us/library/ms178366.aspx. Donc ça devrait marcher. Peut-être que c'était juste la faute de frappe qui a causé votre problème. – Ostemar

Questions connexes