GridView 中的 C# HTML 标签

标签 c# asp.net sql html gridview

我有一个用 C# 编写的 SharePoint Web 部件,用于根据用户选择显示 SQL Server 数据。我使用 DataReader 提取数据,用它填充数据集,然后将该数据集设置为 GridView 中的数据源,并将该控件添加到我的页面:

GridView outputGrid = new GridView();
outputGrid.CssClass = "OutputGrid";
outputGrid.DataSource = flipped_ds1;
outputGrid.RowDataBound += outputGrid_RowDataBound;
outputGrid.DataBind();
Controls.Add(outputGrid);

这为我提供了一个带有声明的 CSS 类的简单 HTML 表格,仅此而已。我面临的唯一问题是数据字段中的换行符根本没有被渲染。我只是得到一个文本 block ,它忽略了呈现为 HTML 时数据库中存在的中断。在单步执行我的代码时,我看到换行符以“\r\n”形式的文本形式出现。我尝试了一个正则表达式:

Regex rgx = new Regex("\r\n");
string inputStr = Convert.ToString(dr[x]);
string outputStr = rgx.Replace(inputStr, "<br />");
newRow[ds3.Tables["Bobst Specs 3"].Columns[x]] = outputStr;

虽然它确实检测并替换了换行符,但我只得到没有换行符的文本“
”。在查看 HTML 源代码时,它会在我指定“
”的位置插入以下行:

&lt;br /&gt;

我还尝试将我的 SQL 查询更改为以下内容:

SELECT REPLACE (fldCustomerName, '. ', '.' + @NewLineChar)

这显然会呈现更多的换行符。我可以看到它们存在,因为如果我也插入正则表达式,它们会受到影响,但不会创建换行符。我不确定如何替换这些,以及用什么来让线条真正断开。

最佳答案

在 GridView 中禁用所需列中的 HTML 渲染

<asp:BoundField DataField="MyColumn" HtmlEncode="false" />

并在字段中将
作为您所拥有的文本的新行

更新: 我的理解是新行没有显示在 gridview 中,然后你试图通过用 <br /> 替换\n 来强制它我同意你的看法。但下一个问题是将 br 标签转换为 html 实体。并且您没有在 gridview 中使用强定义的列。它是自动生成的列。 如果是这样,你所有的步骤都是正确的,还有一件事要做

Prevent HTML encoding in auto-generated GridView columns

关于GridView 中的 C# HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2639162/

相关文章:

c# - 使用 C# 将 Javascript 添加到 ASPX 页面

c# - 如何从 asp.net-membership 获取用户名和 userID 并将其绑定(bind)到下拉列表?

SQL Server 企业管理器下载? (或者 Windows 7 的同等版本?)

c# - UDP 绑定(bind)方法

c# - 列表框延伸到页面之外

asp.net - SharePoint 自定义当前导航/PortalSiteMapProvider

php - 数据不会发布到 MySQL 数据库

sql - 查询执行期间资源超出

c# - RX challenge 5 复杂事件处理使用LINQ语言集成查询(剧透警告)

c# - 如何创建带有嵌套 T 的泛型方法?