如何在GridView列

时间:2016-01-06 20:37:29

标签: c# asp.net gridview

我有以下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

1 个答案:

答案 0 :(得分:4)

正如@ 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();