ASP.NET GridView中常值內容無法換行(自動換行/正常換行)

來源:互聯網
上載者:User

最近做項目的時候,遇到這樣一個問題:我用GridView來顯示課程表,每個儲存格的內容包括課程名、上課地點、教師姓名,然後我想讓它們分行顯示,效果如:

可是呢,GridView太頑強了,不管我拼接字串時用“\r\n”還是"<br/>",結果都無濟於事,都不分行顯示。經過近半天的時間查詢資料,最終終於解決了這個問題,下面就與大家分享一下。

GridView中的換行問題可以分為兩類:一類是自動換行,另一類是正常換行。

先說第一類:自動換行

GridView預設是自動換行,就是說當顯示的字串比較長的時候,GridView會自動換行。

比如我們要顯示:“當字串比較長的時候就會自動換行換行了”,效果如下:

當然,如果我們不想讓它自動換行,在頁面後台添加如下代碼即可:

複製代碼 代碼如下://正常換行
GridView1.Attributes.Add("style","word-break:keep-all;word-wrap:normal");

添加後如下:

下面說說第二類:正常換行

正常換行的關鍵在於分行符號的選取,有人說用逸出字元"\r\n",也有人說用"<br/>"。那到底用哪個呢?下面先看看這兩種的顯示效果:

1、顯示字串:"當字串"+ "\r\n" + "比較長的\r\n時候就會自動換行換行了"

顯示如下(和沒加一樣):

2、顯示字串:"當字串比較長的時候"+ "<br />" + "這裡就換行了"

顯示如下:

由上可以看出,單憑加個分行符號是不能解決問題的。正確的解決方案如下:

1、應該使用 "<br/>"

2、
①如果你綁定欄位為設定模版列,那麼把對應的BoundField設定參數HtmlEncode= "false" 即可。

②如果為自動產生欄位:請添加GridView1_RowDataBound事件

複製代碼 代碼如下:/// <summary>
/// 使得GridView中的內容可以換行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
TableCellCollection cells = e.Row.Cells;
foreach (TableCell cell in cells)
{
cell.Text = Server.HtmlDecode(cell.Text); //注意:此處所有的列所有的html代碼都會按照html格式輸出,如果只需要其中的哪一列的資料需要轉換,此處需要小的修改即可。
}
}
}

看看添加完後的顯示效果:

顯示字串:"當字串"+ "<br />" + "比較長的時候" + "<br />" +"這裡就換行了"

顯示效果:

到此為止,問題就完美解決了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.