将 GridView 标题文本设置为按指示换行

Posted

技术标签:

【中文标题】将 GridView 标题文本设置为按指示换行【英文标题】:Setting GridView header text to wrap as directed 【发布时间】:2010-09-25 23:58:33 【问题描述】:

我有一个 GridView,其中包含以下列:

|    A    |    B C    |    D E / F   |

我希望这些以特定方式包装 - 也就是说,我不想让浏览器根据列宽来决定是否包装。所以在上面的例子中,我可能想要以下内容:

|    A    |    B      |    D         |
|         |    C      |    E / F     |

我尝试过使用\n<br/>,但是这两个都不起作用。

有什么想法吗?

【问题讨论】:

【参考方案1】:

您可以在没有模板的情况下做到这一点。只需在带有 <br /> 标签的标题上设置 htmlEncode="False"。

例子:

<asp:GridView ID="GridView1" runat="server" DataSourceID="Data">
<Columns>
    <asp:BoundField HeaderText="First Line<br />Second Line" DataField="ContactID"
                HtmlEncode="False" />
    <asp:BoundField HeaderText="Second" DataField="FirstName" />
    <asp:BoundField HeaderText="Third<br />Extra" DataField="Title" />
</Columns>
</asp:GridView>

渲染:

第一行 |第二 |第三额外 | 二线 | | | --------------------------------------------- 1 |古斯塔沃 |先生| --------------------------------------------- 2 |凯瑟琳 |女士 | ---------------------------------------------

注意:如果您使用设计器而不是直接编辑 aspx,当您单击确定时,它会将您的“&amp;lt;”更改为“&amp;lt;”。

【讨论】:

不幸的是,看起来 HtmlEncode 设置会影响 HeaderText 和列数据 - 这似乎不安全。似乎没有办法只为 HeaderText 关闭它 是的,这有点令人失望。除非您以其他方式清理数据,否则该列容易受到 XSS 的攻击。 【参考方案2】:

如果您使用模板字段,您可以在标题模板中对标题内容进行细粒度控制:

<asp:templatefield>
    <headertemplate>
      D<br />
      E / F
    </headertemplate>
    <itemtemplate>
        <%#Eval("MyField")%>
    </itemtemplate>
</asp:templatefield>

【讨论】:

以上是关于将 GridView 标题文本设置为按指示换行的主要内容,如果未能解决你的问题,请参考以下文章

Flex4 Label文本换行

如何在所有列标题上启用文本换行?

带有 CustomLayout 项和状态的 GridView

颤动-在gridview上换行时如何设置宽度?

Gridview 和 Gridtile Flutter

label里面文字怎么会换行 咋回事