Привязка ASP.Net к Gridview Удаляет некоторые пробелы (пробельные символы) - PullRequest
1 голос
/ 29 мая 2009

Я получаю данные из базы данных Oracle и связываю их с элементом управления gridview.

Я заметил, что есть случаи, когда столбец содержит одинарные или двойные кавычки, пробелы или пробельные символы удаляются.

Пример некоторых данных в полях в Oracle:

будет прекращено как можно скорее ",

При получении становится ...

будет прекращено как можно скорее ",

И еще один ...

ЭТО ИСПЫТАТЕЛЬНАЯ ЗАПИСЬ "DDD" FFF

, который становится

ЭТО ИСПЫТАТЕЛЬНАЯ ЗАПИСЬ "DDD" FFF

Понятия не имею, почему это происходит ...

есть идеи?

Я думаю, что даже здесь пространства становятся урезанными. В моем примере в первом поле, которое:

будет прекращено как можно скорее "

на самом деле после одинарной кавычки есть два пробела, но здесь отображается только один пробел .. Странно ...

одинарная кавычка пробел двойная кавычка -> '"

Я думаю, что asp.net??

удаляет лишний пробел после цитаты или одиночной цитаты.

Я также обнаружил, что при редактировании моего вида сетки лишние пробелы сохраняются, но когда я возвращаюсь к исходному виду, пробелы исчезают.

Перефразировать этот вопрос ..

Как сохранить WhiteSpace в виде сетки при отображении данных?

Ответы [ 2 ]

7 голосов
/ 29 мая 2009

Это не вещь ASP.Net, это вещь разбора HTML. Если вы создадите обычную страницу Jane HTML с тегом div, а затем поместите 100 пробелов между открывающим и закрывающим тегом, все это будет сжато в один пробел.

Это классическая проблема в Интернете. Если вы действительно хотите, чтобы все получалось правильно, то вам нужно будет закодировать HTML-код пробелами перед их отображением на странице.

Попробуйте заменить все пробелы на  

Вот статья, которая объясняет это немного более подробно: http://webdesign.about.com/od/beginningtutorials/f/blfaqwhitespace.htm

Для ответа на вопрос в комментарии:

Если вам нужно иметь большой контроль над тем, что происходит с вашей сеткой, даже если она является DataBound, вы можете просто обработать событие RowDataBound , которое возникает после привязки каждой строки. *

Предположим, у вас есть GridView, который выглядит следующим образом:

<asp:GridView ID="gbGridWithSpaces" AutoGenerateColumns="false" runat="server" 
    onrowdatabound="gbGridWithSpaces_RowDataBound">
    <Columns>
        <asp:BoundField DataField="ItemWithSpaces" HeaderText="Item With Spaces" />
    </Columns>
</asp:GridView>

В своем коде вы можете обработать событие, чтобы переформатировать исходящий текст, как вам угодно. Например:

protected void gbGridWithSpaces_RowDataBound(object sender, GridViewRowEventArgs e)
{
    foreach (TableCell cell in e.Row.Cells)
    {
        cell.Text = cell.Text.Replace(" ", "&nbsp;");
    }
}

Это эффективно заменит все пробелы на &nbsp; и сохранит их даже при визуализации в браузере. Просто помните, что ваши данные также будут возвращаться таким образом, поэтому вам нужно будет обработать это на сервере, если вы планируете передавать эту информацию обратно в постоянное хранилище.

1 голос
/ 29 мая 2009

Если пробелы важны, вы можете попробовать обернуть предварительно отформатированные текстовые элементы

 теги. 

To Be Phased Out ASAP '  "

становится

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