我正在从Oracle数据库中检索数据并将其绑定到gridview控件.
我注意到有一些实例,当列包含单引号或双引号时,空格或空格字符被剥离.
Oracle中字段中的一些数据示例:
要尽快逐步淘汰'",
检索后,它变成......
要尽快逐步淘汰'",
而另一个......
它的测试记录"DDD"FFF
变成了
它的测试记录"DDD"FFF
我不知道为什么会发生这种情况......
有任何想法吗?
我想即使在这里,空间也会被修剪掉.在我的第一个字段中的示例中:
要尽快逐步淘汰'"
单引号后实际上有两个空格,但这里只显示一个空格..奇...
单引号空间双引号 - >'"
我认为引用或单引号之后的额外空间被asp.net删除了?
我还发现,当我编辑gridview时,会保留额外的空白区域,但是当我回到原始视图时,空白区域就消失了.
重新解释这个问题..
如何在显示数据时在gridview中保留WhiteSpace?
这不是一个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(" ", " ");
}
}
Run Code Online (Sandbox Code Playgroud)
这将有效地替换所有空格 并保留它们,即使在渲染到浏览器时也是如此.请记住,您的数据也将以这种方式返回,因此如果您计划将此信息传递回持久存储,则需要在服务器上处理此数据.
| 归档时间: |
|
| 查看次数: |
10070 次 |
| 最近记录: |