ASP.Net绑定到Gridview剥离一些空格(空格字符)

Bat*_*uta 1 asp.net gridview

我正在从Oracle数据库中检索数据并将其绑定到gridview控件.

我注意到有一些实例,当列包含单引号或双引号时,空格或空格字符被剥离.

Oracle中字段中的一些数据示例:

要尽快逐步淘汰'",

检索后,它变成......

要尽快逐步淘汰'",

而另一个......

它的测试记录"DDD"FFF

变成了

它的测试记录"DDD"FFF

我不知道为什么会发生这种情况......

有任何想法吗?

我想即使在这里,空间也会被修剪掉.在我的第一个字段中的示例中:

要尽快逐步淘汰'"

单引号后实际上有两个空格,但这里只显示一个空格..奇...

单引号空间双引号 - >'"

我认为引用或单引号之后的额外空间被asp.net删除了?

我还发现,当我编辑gridview时,会保留额外的空白区域,但是当我回到原始视图时,空白区域就消失了.

重新解释这个问题..

如何在显示数据时在gridview中保留WhiteSpace?

Jos*_*osh 7

这不是一个ASP.Net的东西,它是一个HTML解析的东西.如果你要在其中创建一个带有div标签的普通Jane HTML页面,然后在开始标记和结束标记之间放置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>
Run Code Online (Sandbox Code Playgroud)

在您的代码中,您可以处理该事件,以便随意重新格式化外发文本.例如:

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

这将有效地替换所有空格&nbsp;并保留它们,即使在渲染到浏览器时也是如此.请记住,您的数据也将以这种方式返回,因此如果您计划将此信息传递回持久存储,则需要在服务器上处理此数据.