在asp.net的网格视图中以多行显示文本

时间:2010-10-20 04:49:18

标签: asp.net gridview multiline

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

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

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

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

4 个答案:

答案 0 :(得分: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");
        }
    }
}

答案 1 :(得分:1)

您可以将ItemStyleTemplateField设置为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

答案 2 :(得分:1)

有时ItemStyle Wrap =“true”不起作用。要确保文本包装,请在标签中包围标签,并在周围的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>

答案 3 :(得分:1)

通过应用css类

来尝试这样做
 .paraGraphtext
    {
        white-space: pre-wrap;   
    }





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