我有一个用 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 源代码时,它会在我指定“
”的位置插入以下行:
<br />
我还尝试将我的 SQL 查询更改为以下内容:
SELECT REPLACE (fldCustomerName, '. ', '.' + @NewLineChar)
这显然会呈现更多的换行符。我可以看到它们存在,因为如果我也插入正则表达式,它们会受到影响,但不会创建换行符。我不确定如何替换这些,以及用什么来让线条真正断开。
最佳答案
在 GridView 中禁用所需列中的 HTML 渲染
<asp:BoundField DataField="MyColumn" HtmlEncode="false" />
并在字段中将
作为您所拥有的文本的新行
更新:
我的理解是新行没有显示在 gridview 中,然后你试图通过用 <br />
替换\n 来强制它我同意你的看法。但下一个问题是将 br 标签转换为 html 实体。并且您没有在 gridview 中使用强定义的列。它是自动生成的列。
如果是这样,你所有的步骤都是正确的,还有一件事要做
关于GridView 中的 C# HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2639162/