【问题标题】:ASP.Net Binding to Gridview Strips some space (whitespace characters)ASP.Net 绑定到 Gridview 去除一些空格(空白字符)
【发布时间】:2009-05-29 01:50:53
【问题描述】:

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

我注意到在某些情况下,当列包含单引号或双引号时,空格或空白字符会被删除。

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

尽快淘汰'",

当检索到时,它变成...

尽快淘汰'",

还有一个……

它的测试记录“DDD”FFF

变成了

它的测试记录“DDD”FFF

我不知道为什么会这样......

有什么想法吗?

我认为即使在这里,空间也正在被修剪。在我的示例中,第一个字段是:

将尽快淘汰'"

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

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

我认为 asp.net 正在删除引号或单引号后的多余空格??

我还发现,当我编辑我的 gridview 时,多余的空格会被保留,但是当我返回原始视图时,空格会消失。

重新表述这个问题..

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

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    这不是 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;");
        }
    }
    

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

    【讨论】:

    • 但是当值被绑定到gridview时我如何用&nbsp替换它?
    【解决方案2】:

    如果空格很重要,您可以尝试使用预先格式化的文本元素

     
    标签。

    将尽快淘汰'  "

    变成

    将尽快淘汰'"

    【讨论】:

    • 如何在网格视图的 Itemtemplate 中执行此操作?
    • 我在gridview中的项目模板是这样标记的。我在哪里添加
       标签? 
    • 这是我过去所做的,但新的要求是现在将此网格导出到 Excel.. 使用内容类型并保存为 .xls。但是,当我打开此文件时,它会将换行符视为新行,但会将新行与包含数据的行合并。将此 Excel 文件用作对 SSIS 的导入,它会返回将这些行中的每一行视为单独的行,然后抛出错误,因为每隔一行都是空的。任何想法如何防止这种情况?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2018-02-16
    • 2017-09-06
    • 2021-11-05
    • 1970-01-01
    相关资源
    最近更新 更多