Отображение текста в многострочном виде внутри представления сетки в asp.net

Я использую сетку в своем приложении 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>

person Null Pointer    schedule 20.10.2010    source источник


Ответы (4)


попробуйте это ... работает правильно ... для переноса текста в 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");
        }
    }
}
person user2475345    schedule 04.12.2013

Иногда 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>
person TheGeekYouNeed    schedule 20.10.2010
comment
как я могу разместить div внутри gridview. Является ли это возможным? - person Null Pointer; 20.10.2010
comment
я пробовал это. но у меня не работает. исходный код asp добавлен в мой отредактированный вопрос - person Null Pointer; 20.10.2010
comment
Ваш код gridview испорчен. Ваши области EditTemplate и ItemTemplate объединены - person TheGeekYouNeed; 20.10.2010

Вы можете установить ItemStyle TemplateField на 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

person bla    schedule 20.10.2010
comment
я тоже пробовал это. но у меня не работает. исходный код asp добавлен в мой отредактированный вопрос. :(. и я видел снимок экрана. именно это я и хотел - person Null Pointer; 20.10.2010
comment
Это работает для меня, между ними есть пробелы. Что делать, если пользователь вводит слово из 100 символов. Тогда это не сработает. Пожалуйста, предложите. - person Vijay Balkawade; 09.10.2012

Попробуйте это, применив класс css

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





<ItemTemplate>
          <asp:Label ID="Label1" runat="server" Text="<%# Eval("ID") %>" CssClass="paraGraphtext"></asp:Label>
     </ItemTemplate>
person user644507    schedule 04.03.2011
comment
эй, это не работает :( - person Kiran Solkar; 31.12.2014