Исправить ширину столбца Gridview с переносом слов - PullRequest
4 голосов
/ 24 марта 2011

Я давно искал ответ на этот вопрос и не нашел того, что ищу. У меня есть GridView с 5 столбцами. Один из этих столбцов - это очень длинная строка вместо "". Мне нужно иметь возможность фиксировать ширину столбца и иметь перенос слов до конца строки. Я перепробовал все свойства в gridview, чтобы получить то, что мне нужно, но диапазон всегда растягивается горизонтально и никогда не переносится. Вот мой код gridView

            <asp:GridView ID="resultsGrid" AutoGenerateColumns="False" runat="server" AllowPaging="True"
            AllowSorting="True" PageSize="20" OnPageIndexChanging="gridView_PageIndexChanging"
            OnSorting="gridView_Sorting" PagerSettings-Position="TopAndBottom" PagerStyle-HorizontalAlign="Center">
            <PagerSettings Position="TopAndBottom" />
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <%# Container.DataItemIndex + 1 + "." %>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField Visible="false" SortExpression="record_id">
                    <ItemTemplate>
                        <asp:Label ID="lblRecordID" runat="server" Text='<%# Bind("RecordID") %>' Visible="false"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Note Type" SortExpression="business_content_type_cd">
                    <ItemTemplate>
                        <asp:Label ID="lblNoteType" runat="server" Text='<%# Bind("NoteType") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Author" SortExpression="author_user_name">
                    <ItemTemplate>
                        <asp:Label ID="lblAuthor" runat="server" Text='<%# Bind("Author") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Date" SortExpression="content_dttm">
                    <ItemTemplate>
                        <asp:Label ID="lblDate" runat="server" Text='<%# Bind("Date") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Label Width="100px" ID="lblData" runat="server" Text='<%# Bind("NoteContent") %>'></asp:Label>
                        <asp:HyperLink ID="linkMore" runat="server" />
                    </ItemTemplate>
                    <FooterStyle Wrap="true" Width="100px" />
                    <HeaderStyle Wrap="true" Width="100px" />
                    <ItemStyle Wrap="true" Width="100px" />
                </asp:TemplateField>
                <asp:TemplateField SortExpression="size" Visible="false">
                    <ItemTemplate>
                        <asp:Label ID="lblSize" runat="server" Text='<%# Bind("Size") %>' Visible="false"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <PagerStyle HorizontalAlign="Center" />
        </asp:GridView>

Я не фанат того, что я должен делать, но клиент хочет то, что хочет клиент (мне нужно имитировать пользовательский интерфейс экрана мейнфрейма) Спасибо за помощь

Ответы [ 7 ]

2 голосов
/ 26 сентября 2018

использовали white-space: normal; для строки, между которой есть пробелword-break: break-all для строки, которые как соединены.

и добавьте стиль CSS для сетки на документе, готовом. Макет таблицы: исправлено в стиле сетки, работало для меня

 <asp:TemplateField HeaderText="Action">
    <ItemStyle Wrap="true"/>
    <ItemTemplate>
    <div style="white-space: normal; word-break: break-all;">
    <asp:Label ID="lblLogStatus" runat="server" Text='<%# Eval("LogMsg")%>' Style="white-space: normal !important;  word-break: break-all !important;"></asp:Label>
    </div>                                                                                    </ItemTemplate>
    </asp:TemplateField>
1 голос
/ 26 декабря 2012

В Wordwrap есть проблема, когда текст слишком длинный (без пробела в тексте), мое решение использует css: скрытый текст, если он слишком длинный

Это пример кода

               <Columns>
                    <asp:TemplateField HeaderText="Parameter path">
                        <ItemTemplate>
                            <div class="paraGraphtext">
                                <asp:Label ID="lblId" runat="server" Text='<%# Eval("tableField") %>'></asp:Label>
                            </div>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>

и css

.paraGraphtext
        {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            width:150px;
        }
1 голос
/ 24 марта 2011

Попробуйте это

         <asp:TemplateField>
                <ItemTemplate>
                     <asp:Label ID="lblData" runat="server" 
                            Text='<%# Bind("NoteContent") %>'></asp:Label>
                </ItemTemplate>
                <ItemStyle Width="200px" />
            </asp:TemplateField>
0 голосов
/ 25 июля 2014

Установите style = "table-layout: fixed" и Width = "1000px" в поле вида сетки. Это сработало для меня.

код выглядит следующим образом:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" style="table-layout: fixed" Width="900px" onprerender="GridView1_PreRender">

Добавьте событие GridView1_PreRender, если вы хотите удалить параметр сетки по умолчанию: стиль = «границы коллапса: крах»

код для события GridView1_PreRender выглядит следующим образом:

protected void GridView1_PreRender(object sender, EventArgs e)
{
    GridView1.CellSpacing = -1;
    GridView1.Style["border-collapse"] = "seperate";
}

Пожалуйста, вернитесь, если у вас есть какие-либо сомнения ..

0 голосов
/ 31 декабря 2013
            <Columns>
                <asp:TemplateField HeaderText="Parameter path">
                    <ItemTemplate>
                        <div style="white-space:normal;">
                            <asp:Label ID="lblId" runat="server" Text='<%# Eval("tableField") %>'></asp:Label>
                        </div>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
0 голосов
/ 04 мая 2012

Я уверен, что это все еще обсуждается, но что-то вроде добавления «перенос по словам», «прерывистое слово» в событии ItemDataBound может работать.

0 голосов
/ 14 февраля 2012

Я закончил разбивать текст по ширине стеги ... Не то, что я хотел сделать, но не смог найти ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...