2010-10-20 53 views
1

J'utilise une vue de grille dans mon application asp.net. Dans une colonne, j'ai besoin d'afficher la description (5 caractères minimum, 255 caractères maximum). J'utilise une étiquette pour contenir la description dans cette vue de la grille.Afficher du texte en multiline dans une vue de grille dans asp.net

Mais mon problème est que si la description est plus grande, elle s'étire dans le navigateur et l'affiche en une ligne. Je veux afficher la description en ligne multiple (comme un paragraphe)

J'espère que quelqu'un m'aidera. l'ensemble du code de vue de la grille est présentée ci-dessous

<asp:GridView ID="gv_View_Documents" runat="server" AllowSorting="true" DataKeyNames="DocumentName,Description" SkinID="customGridview" AutoGenerateColumns="false" OnSorting="gv_View_Documents_Sorting" OnRowCancelingEdit="gv_View_Documents_RowCancelingEdit" OnRowCommand="gv_View_Documents_RowCommand" 
        OnRowEditing="gv_View_Documents_RowEditing" OnRowUpdating="gv_View_Documents_RowUpdating" > 
        <Columns> 
         <asp:TemplateField HeaderText="Document Name" HeaderStyle-Width="200" HeaderStyle-CssClass="GridHeaderStyle" SortExpression="DocumentName" > 
          <ItemTemplate> 
           <asp:LinkButton CommandName="ViewDocument" CssClass="GridHeaderStyle" ID="hlnk_View_Document" runat="server" CommandArgument='<%# Bind("DocumentName") %>' Text='<%# Bind("DocumentName") %>'> 
           </asp:LinkButton> 
          </ItemTemplate> 
         </asp:TemplateField> 


         <asp:TemplateField HeaderStyle-Width="200" HeaderText="Description"> 

         <ItemTemplate> 


          <asp:Label ID="lbl_gv_DocumentDescription" runat="server" Text='<%# Bind("Description") %>' ></asp:Label></ItemTemplate> 

          <EditItemTemplate> 
          <asp:TextBox ID="txt_gv_EditDescription" MaxLength="250" runat="server" Text='<%# Bind("Description") %>'></asp:TextBox> 
          </EditItemTemplate> 
          </asp:TemplateField> 

          <asp:TemplateField HeaderStyle-Width="50" HeaderStyle-CssClass="GridHeaderStyle" ShowHeader="False" > 
          <EditItemTemplate> 
          <asp:LinkButton ID="Bttn_Update_Description" ForeColor=" #555555" runat="server" CausesValidation="False" 
           CommandName="Update" Text="Update"></asp:LinkButton>&nbsp;<asp:LinkButton ID="Bttn_Cancel_Settings" ForeColor=" #555555" runat="server" CausesValidation="False" 
           CommandName="Cancel" Text="Cancel"></asp:LinkButton></EditItemTemplate><ItemTemplate> 
          <asp:LinkButton ID="Bttn_Edit_Description" ForeColor=" #555555" runat="server" CausesValidation="False" CommandName="Edit" 
           Text="Edit" ></asp:LinkButton></ItemTemplate><ControlStyle CssClass="edit" /> 
        </asp:TemplateField> 


        </Columns> 
        </asp:GridView> 

Répondre

1

Vous pouvez régler la ItemStyle du TemplateField à true comme ceci:

<ItemStyle Wrap="true" Width="100px" /> 

complet Code gridview:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemStyle Wrap="true" Width="100px" /> 
      <ItemTemplate> 
       <asp:Label ID="Label2" runat="server" Text='<%# Eval("Name") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Label ID="Label3" runat="server" Text='<%# Eval("Age") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

Capture d'écran:

alt text

+1

son ne fonctionne pas :( –

+0

étrange. cela fonctionne pour moi (voir edit) – bla

+0

J'ai essayé cela aussi. mais ne travaille pas pour moi. le code ASP d'origine est ajouté dans ma question EDITed. :(et j'ai vu l'écran shot.that est exactement ce que je voulais –

0

Parfois, ItemStyle Wrap = "true" ne fonctionne pas. Pour être certain que votre texte s'enroule, entourez l'étiquette dans un et définissez une largeur sur la div environnante.

EDIT

<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:Label ID="Label1" runat="server" Text="<%# Eval("ID") %>"></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <div style="width:100px;"> 
       <asp:Label ID="Label2" runat="server" Text="<%# Eval("Name") %>"></asp:Label> 
      </div> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:Label ID="Label3" runat="server" Text="<%# Eval("Age") %>"></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 
+0

comment est-il possible? –

+0

regardez ma réponse éditée – TheGeekYouNeed

+0

j'ai essayé ceci. mais ne fonctionnant pas pour moi le code original d'asp est ajouté dans ma question éditée –

1

Essayez comme en appliquant la classe css

.paraGraphtext 
    { 
     white-space: pre-wrap; 
    } 





<ItemTemplate> 
      <asp:Label ID="Label1" runat="server" Text="<%# Eval("ID") %>" CssClass="paraGraphtext"></asp:Label> 
    </ItemTemplate> 
+0

hey ceci ne fonctionne pas :( – KiranSolkar

2

essayez ceci fonctionne correctement ... ... pour le texte enveloppant dans Gridview

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      e.Row.Cells[1].Attributes.Add("style", "word-break:break-all;word-wrap:break-word;width:100px"); 
     } 
    } 
}