我有以下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
。
答案 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();