1

我在 SQL Server 数据库中有一个文本,其中包含new line charactercarriage return character。当我将此值分配给字符串变量时,我可以看到这些换行符和回车符,如第一个屏幕截图所示。但是当它被渲染时,这些值不存在(如第二个屏幕截图所示)。

我们如何render在gridview中使用以下代码换行和回车字符?

代码

protected void Page_Load(object sender, EventArgs e)
{

    List<Account> result = new List<Account>();
    string value = DisplayTest("Daily Tax Updates:\r\n");

    Account acc = new Account(){Description = value};
    result.Add(acc);

    grdFinancialAmount.DataSource = result;
    grdFinancialAmount.DataBind();


}

public class Account
{
    public string Description { get; set; }
}


private static string DisplayTest(string searchValue)
{
    string test = String.Empty;
    string connectionString = "Data Source=.;Initial Catalog=LibraryReservationSystem;Integrated Security=True;Connect Timeout=30";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        string commandText = @"SELECT AccountType,* 
                          FROM Account 
                          WHERE AccountType LIKE @input ESCAPE '\'";
        using (SqlCommand command = new SqlCommand(commandText, connection))
        {
            command.CommandType = System.Data.CommandType.Text;
            command.Parameters.AddWithValue("@input", "%" + searchValue + "%");

            using (SqlDataReader reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {

                        test = reader.GetString(0);
                    }
                }
            }
        }
    }

    return test;

}

标记

<asp:GridView ID="grdFinancialAmount" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField HeaderText="Text">
            <ItemTemplate>
                <%# Eval("Description")%>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

来自数据库的变量值

来自数据库的变量值

渲染值

渲染值

4

2 回答 2

1

替换为\r\n应该\\r\\n可以正常工作。

我误解了这一点,我虽然你想显示\r\n而不是返回字符,但正如评论所说,替换为<br/>.

string.Replace("\r\n", "<br/>");
于 2013-02-12T14:01:17.897 回答
0

您呈现的值是 html。放入\r\nhtml 可能会更改源 html,但对渲染的内容绝对没有影响。

您可以通过在渲染窗口上执行“查看源代码”来验证这一点。

这里的一种方法是,在渲染之前,用硬换行符替换所有出现的\r\n地方<br/>

或者你可以在<p>你的字符串前面添加一个</p>标签,在你的字符串末尾添加一个标签,然后用 替换所有\r\n出现的</p><p>地方,即将它分成段落。这可能是两者中更优雅的方法。

这里也会有其他选项,你只需要知道你需要将你的 crlf 字符翻译成 html 可以理解的东西。

于 2013-02-12T14:17:21.670 回答