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

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

|    A    |    B C    |    D E / F   |

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

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

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

有什么想法吗?

【问题讨论】:

    标签: c# asp.net html gridview


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多