2010-10-20 7 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

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

+1

его не работает :( –

+0

странно. он работает для меня (см. править). – bla

+0

Я тоже это пробовал. но не работает для меня. исходный код asp добавлен в мой EDITed вопрос. :(и я видел снимок экрана. Это именно то, что я хотел –

0

Иногда ItemStyle Wrap = "true" не работает. Чтобы убедиться, что ваш текст обернут, окружите Label в a и установите ширину в окружающем div.

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

. Я размещаю div внутри gridview. возможно ли это? –

+0

Посмотрите на мой отредактированный ответ – TheGeekYouNeed

+0

Я пробовал это, но не работал для меня. исходный код asp добавлен в мой вопрос EDITed –

1

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

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





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

эй это не работает :( – KiranSolkar

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"); 
     } 
    } 
} 
Смежные вопросы