2010-10-20 41 views
1

我在我的asp.net应用程序中使用网格视图。在一列中,我需要显示描述(最少5个字符,最多255个字符)。我使用一个标签来保存网格视图中的描述。在asp.net中显示网格视图内的多行文本

但我的问题是,如果描述较大,它会在浏览器中展开并显示在一行中。我想在多行显示说明(如段落)

我希望有人帮助我。整个网格视图代码如下所示

<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> 

回答

1

可以将TemplateFieldItemStyle设置为true这样的:

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

完整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> 

截图:

alt text

+1

文本换行它不工作:( – 2010-10-20 06:15:25

+0

奇怪,它适用于我(见编辑)。 – bla 2010-10-20 06:47:10

+0

我也试过。但不为我工作。在我编辑的问题中添加了原始的asp代码。 :(。和我看到了屏幕截图。这正是我想要的 – 2010-10-20 08:42:29

0

有时ItemStyle Wrap =“true”不起作用。为了确定你的文字包装,将标签包围在a中并在周围的div上设置一个宽度。

编辑

<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

怎么能我在gridview里面放了一个div,可能吗? – 2010-10-20 06:15:51

+0

看看我编辑的答案 – TheGeekYouNeed 2010-10-20 06:49:28

+0

我试过了这个,但是对我没有效果,原来的asp代码添加在我编辑的问题中 – 2010-10-20 08:42:07

1

通过应用CSS类

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





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

嘿,这是不工作:( – KiranSolkar 2014-12-31 07:52:26

2

尝试这样试试这个... ...正常工作中的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"); 
     } 
    } 
}