HeaderText 换行问题

这篇博客探讨了在ASP.NET中GridView的BoundField HeaderText如何实现换行。提供了四种解决方案,包括在ItemDataBound事件中动态设置Text,HtmlDecode方法,修改GridView的HtmlEncode属性,以及使用CSS的word-break和word-wrap属性。通过这些方法,可以解决中文和英文在HeaderText中换行显示的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HeaderText 换行问题

问题描述

<asp:BoundField DataField="CabinName" HeaderText="等级 (Class)">
                <ItemStyle HorizontalAlign="Center" Width="120px" Wrap="true" />
            </asp:BoundField>

想实现:(即中文一行,英文一行)
  等级 
(Class)

解决方案一

protected void dataGridShoppingCar_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Header)
        {
          TableCellCollection cells = e.Item.Cells;
           cells[0].Text = "航班ID"; 
            cells[1].Text = "船舱ID";
            cells[2].Text = "航班日期 <br> (Sailing Date)"; 
            cells[3].Text = "时间 <br> (Time of Departure)"; 
            cells[4].Text = "航线 <br> (Sailing Route)";
            cells[5].Text = "船公司 <br> (Ship Owner)"; 
            cells[6].Text = "等级 <br> (Class)"; 
            cells[7].Text = "等级 <br> (Class)"; 
            cells[8].Text = "出发港口 <br> Departure Port";             
            cells[9].Text = "到达港口 <br> Arrival Port";
            cells[10].Text = "票型 <br> ID";
            cells[11].Text = "票型 <br> Ticket Type"; 
            cells[12].Text = "单价 <br> Unit Price"; 
            cells[13].Text = "张数 <br> Number of Ticket(s)"; 
            cells[14].Text = "应付 <br> Due Payment";   
            //cells[15].Text = "取消购买 <br> Cancel the Purchase"; 
          }
    }

解决方案二

Protected Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles GridView1.DataBound
    Dim gv As GridView = CType(sender, GridView)
    Dim c As TableCell
    For Each c In gv.HeaderRow.Cells
        c.Text = System.Web.HttpUtility.HtmlDecode(c.Text)
    Next
End Sub

解决方案三

GridView控制項中,將HeaderText屬性中的文字換行

在預設的情況下,使用GridView的欄位編輯器來編輯HeadText的文字時,

若直接輸入HTML程式碼時,

則會將所輸入的照實顯示出來。


因為在預設的情況下,HeadText有經過HTML Encode,

所以所輸入的HTML tag會經過HTML Encode轉換成HTML的特殊字元碼,

就造成這樣的結果。

所以,要把我們所輸入的文字當作HTML來處理的話,只要將 HtmlEncode的屬性設定為 false,

就可以正確獲得我們所想要的結果了。


方案四


如果要给所有的列增加此属性:
protected void Page_Load(object sender, EventArgs e)
    {
        //正常换行
        GridView1.Attributes.Add("style", "word-break:keep-all;word-wrap:normal");
        //下面这行是自动换行
        GridView1.Attributes.Add("style", "word-break:break-all;word-wrap:break-word");
        if (!IsPostBack)
        {
              bind();//调用数据绑定即可
        }
    }
总之:善用CSS的word-break:break-all;word-wrap:break-word属性即可,这个属性是通用的对于顽固的南换行问题都可以解决,不局限于GridView。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值