【问题标题】:How to show new line in a GridView column如何在 GridView 列中显示新行
【发布时间】:2016-01-06 20:37:29
【问题描述】:

我有以下 C# 函数:

public string CheckInCollection(long lngProvId)
{
    //...
    foreach (var item in collList)
    {
        strColl += item.Id.ToString() + " (" + item.Title + ")" + "\r\n";
    }

    return strColl;
}

以下 C# 函数:

public void PopulateGridView(bool blType)
{
    if (blType == false)
    {
    }
    else
    {
        strCollFinalized = "" + ddlContent.SelectedItem + "|" + CheckInCollection(Convert.ToInt64(ddlContent.SelectedItem.Value)) + "";
        string[] strL = strCollFinalized.Split('|');

        DataTable dt = new DataTable();
        DataColumn dc = new DataColumn("Provider");
        DataColumn dc1 = new DataColumn("Collection");

        dt.Columns.Add(dc);
        dt.Columns.Add(dc1);

        DataRow dr = dt.NewRow();
        dr[dc] = strL[0];
        dr[dc1] = strL[1];

        dt.Rows.Add(dr);
        gvData.DataSource = dt;
        gvData.DataBind();
    }
}

生成gridview时,第二列显示在一行中,但是当我检查源时,它显示在下一行中。

如何修改,以便返回的字符串在新行中显示每个 strColl

【问题讨论】:

标签: c# asp.net gridview


【解决方案1】:

按照@user2169261 的建议,您可以添加<br> 而不是\r\n

然后您可以将要显示换行符的列的HtmlEncode 属性设置为false

例如:

<Columns>
    <asp:BoundField DataField="Whatever" HtmlEncode="False" />
</Columns>

对于自动生成的列,您可以尝试以下方法(根据此answer

自行检查 DataTable 并为每一列创建一个明确的 BoundColumn:

foreach (DataColumn column in dt.Columns)
{
    GridViewColumn boundColumn = new BoundColumn
    {
        DataSource = column.ColumnName,
        HeaderText = column.ColumnName,
        HtmlEncode = false
    };
    gvData.Columns.Add(boundColumn);
}

gvData.DataSource = dt;
gvData.DataBind();

【讨论】:

  • 我正在自动生成列,因此不幸的是无法正常工作:/
  • 我刚刚注意到,我正在搜索是否可以通过编程方式将编码设置为 false
  • 我知道你在做什么......在分配给gridview之前设置boundfield设置。我会测试一下。谢谢。
  • 我必须在RowDataBound 函数中操作并添加它。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2015-10-29
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多