1

我实际上是在尝试使用 c# 在 asp.net 项目中的字符串中插入换行符。我将此字符串放入 DataRow 中,然后将其添加到名为“ds”的数据表中。完成后,我将此数据表 ds 链接到 gridview . 这是我的代码:

            risque.projet = dt.Rows[i]["fk_projet"].ToString();
            risque.release = dt.Rows[i]["fk_release"].ToString();

            //Create the String for adding to the row
            String test = "Project:"+risque.projet+"<br>"+ "Release: "+risque.release;
            drow["Description"] = test;
            Label1.Text = test;


            //Add the row to the datatable.
            ds.Rows.Add(drow);

            //Link the datatable to the gridview
            GridView1.DataSource = ds;
            GridView1.DataBind();

我想要这个输出:

项目:.......

释放:.......

但我总是有:项目:....发布......

我尝试了很多解决方案: -System.Environment.NewLine -\r\n -\n

编辑:我的 gridView 的代码。我的 gridview 中没有任何内容,因为所有内容都是在运行时创建的。

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
        EnableSortingAndPagingCallbacks="True" PageSize="5">
        <SelectedRowStyle Wrap="True" />
    </asp:GridView>

但没有任何效果。br 标签有效,但仅当我在标签中显示我的字符串时。

你知道我的错误吗?你有解决办法吗?我在这上面花了太多时间。

谢谢,

昆汀

4

4 回答 4

3

它应该可以将标签放入,但将列的 HtmlEncode 属性设置为 false。默认情况下,所有字段都是 HtmlEncoded,这当然会阻止 html 标签像 html 标签一样工作。

但是,如果您这样做,则需要在代码隐藏中手动对字段值进行 htmlencode 以防止 XSS。

"Project:" + Server.HtmlEncode(risque.projet )+ "<br />" + "Release: " + Server.HtmlEncode(risque.release)

(与 Server.HtmlEncode 相比,我更喜欢Anit-Cross-Site Scripting Library 的 HtmlEncode 实现,但这是另一个主题。)

于 2012-05-04T13:44:12.163 回答
1

在这种情况下,您可以使用回车符 vbCrLf 来代替连接中断标记。

回车字符用于打印和显示功能。

但是,C# 中不存在 vbCrLf。vbCrLf 的值为“\r\n”。所以试试下面这个。

string vbCrLf = "\r\n";
String test = "Project:" + risque.projet + vbCrLf + "Release: " + risque.release;
于 2012-05-04T13:56:41.353 回答
1

将网格列转换为模板列,标签将发挥作用。
如果将数据绑定到标签,它将起作用。

于 2014-02-21T20:33:55.643 回答
0

我认为你需要:<br /> 而不是<br>

于 2012-05-04T13:44:53.943 回答