2009-05-26 7 views
5

J'ai essayé de modifier la propriété RowStyle Wrap et chaque propriété Wrap dans la grille. Comment puis-je arrêter le retour à la ligne dans une Gridview quelle que soit la taille de la ligne de texte de la ligne?Wordwrap Gridview

+0

Qu'est-ce que vous essayez d'accomplir? Voulez-vous que cette colonne augmente avec la longueur du texte, ou voulez-vous que le texte soit juste coupé en fonction de la largeur de la colonne? – CodeLikeBeaker

+0

Oui, j'aimerais que la colonne se développe. Je suppose que je suis habitué à écrire html dans asp classic. – Eric

Répondre

9

Ce n'est pas RowStyle. Vous devez définir le paramètre de retour à la ligne de l'élément individuel sous les colonnes.

<asp:GridView ID="GridView1" runat="server"> 
    <Columns> 
     <asp:BoundField> 
     <ItemStyle Wrap="False" /> 
     </asp:BoundField> 
     <asp:BoundField> 
     <ItemStyle Wrap="False" /> 
     </asp:BoundField> 
    </Columns> 
</asp:GridView> 

Ceci doit être fait pour chaque colonne individuelle. Vous pouvez configurer une méthode dans le code-behind pour le faire pour vous.

+1

Cette méthode a fonctionné pour moi dans ASP.NET 4, IE 8. Je crois qu'il a ajouté un noWrap = "noWrap" aux éléments td. Cependant, noWrap est apparemment obsolète, et ajouter le style suivant aux éléments td serait meilleur: style = "white-space: nowrap". – Mike

+1

@Mike: Sons sur la vitesse de Microsoft. Dans une méthode compatible avec plusieurs navigateurs, ajouter votre style ''. –

1

Jason écrit dans this blog post:

je faisais face aux mêmes problèmes avec le Gridview lors du chargement long texte de la base de données. J'ai essayé la méthode DIV pour obtenir avec le style CSS pour empêcher la table de s'étendre tout le chemin vers la droite. Je l'ai eu à travailler maintenant avec elipsis montrant si le texte est trop long. Cependant, cela signifie que je ne peux pas afficher tout le texte dans la grille, ce qui peut me tromper les utilisateurs. J'ai donc ajouté un autre style appelé "word-break: break-all" pour décomposer le texte en morceaux qui correspondent bien à la table et ont obtenu les résultats que je voulais. Ci-dessous les parties à mon code:

<style type="text/css"> 
    .DisplayDesc { width:500px; word-break: break-all; } 
    .DisplayDiv { width:500px; OVERFLOW:hidden; TEXT-OVERFLOW:ellipsis;} 
</style> 

<asp:TemplateField HeaderText="Log Description"> 
    <ItemStyle Font-Names="Tahoma" Font-Size="X-Small" 
       HorizontalAlign="Left" Wrap="True" /> 
    <ItemTemplate> 
     <div class="DisplayDiv"> 
      <asp:Label CssClass="DisplayDesc" ID="Label1" runat="server" 
         Text='<%# Bind("TransText") %>'></asp:Label> 
     </div> 
    </ItemTemplate> 
</asp:TemplateField> 
0

Il suffit de définir nowrap dans une classe css, et appliquer cette classe pour couvrir l'étiquette, et de mettre votre lable dans cette balise span,

span class = "yourclassname" votre étiquette/plage d'étiquettes vides

0

c'est ce qui a fonctionné pour moi

<asp:GridView ID="SomeGridView" CssClass="gridtext" > 

.gridtext 
{ 
    white-space: nowrap; 
} 

.gridtext table 
{ 
    white-space: nowrap; 
} 
.gridtext tr 
{ 
    white-space: nowrap; 
} 
.gridtext td 
{ 
    white-space: nowrap; 
} 

.gridtext th 
{ 
    white-space: nowrap; 
}