[英]How to center align the header text of a TemplateField?
我有一个带有TemplateField
的GridView
。
我试过HeaderStyle-HorizontalAlign="Center"
将 TemplateField 的标题文本对齐到中心,但它不起作用。
<asp:TemplateField HeaderText="Events" HeaderStyle-HorizontalAlign="Center"
ItemStyle-HorizontalAlign="Center">
</asp:TemplateField>
如何将 TemplateField 的标题文本居中对齐?
当ItemStyle-HorizontalAlign="Center"
对齐中心时,TemplateField 的项目工作正常。
任何帮助将不胜感激!
<center>
标记在 HTML 4.01 中已弃用,在 HTML5 中不受支持 - 您发布的工作代码可能是“CSS-ified”,如下所示:
<asp:TemplateField ItemStyle-HorizontalAlign="Center">
<HeaderTemplate>
<asp:Panel style="margin-left: auto; margin-right: auto; text-align: center;">
Events
<asp:Panel>
</HeaderTemplate>
<asp:TemplateField>
(注意:Panel
是<div>
的 ASP.Net 等价物。)
这里的一个小改进是为样式定义一个 CSS 类,以便它可以在其他地方重用:
.center {
margin-left: auto;
margin-right: auto;
text-align: center;
}
...并从面板中引用它而不是使用内联样式:
<asp:Panel CssClass="center">
我刚刚创建了一个新的 WebForms 解决方案并删除了引导程序,以确保没有 css 样式干扰我的代码。 这就是我为重现您的问题所做的工作。
ASP:
<asp:GridView runat="server" ID="grid" Style="width: 500px;">
<Columns>
<asp:TemplateField HeaderText="FirstName - TemplateField">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("FirstName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
如您所见,我定义了一个 TemplateField,没有任何额外的 css 样式。
代码隐藏:
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
grid.DataSource = GetPersons();
grid.DataBind();
}
public IEnumerable<Person> GetPersons()
{
for(int i = 0; i< 10; i++)
{
yield return new Person { FirstName = $"John{i}", LastName = "Doe", Age = i };
}
}
}
我只是返回 10 个虚拟项目来创建一个演示网格。 没有什么异常。
这是 Chrome 和 Internet Explorer 中的结果:
如您所见,标题默认居中。 这适用于 -BoundFields 和 TemaplateFields。
如果您不是这种情况,我建议您检查是否有任何其他样式表干扰了您的样式。 我知道 bootstrap 3 默认为text-align: center
for th
元素(因为我刚刚检查过)
没错, temStyle-HorizontalAlign="Center" 应该可以工作。 请注意,您的 gridview 样式是从父样式表继承的。 意思是,您的 gridview 至少有一个不对齐的父样式。 那应该是你的问题出现的地方。
我找到了一种方法来解决我在 HeaderTemplate 中使用<center>
标签的问题:
<asp:TemplateField ItemStyle-HorizontalAlign="Center">
<HeaderTemplate>
<center>
Events
</center>
</HeaderTemplate>
<asp:TemplateField>
试试这个将文本放在一列中:
.centeralign {
text-align: center;
}
<ItemStyle CssClass="centeralign" />
<asp:TemplateColumn HeaderStyle-VerticalAlign="Top">
<HeaderTemplate>
<asp:LinkButton runat="Server" ID="linkbuttonSortType" Text="Type" />
<br>
<asp:DropDownList runat="Server" ID="dropdownlistTypeFilter" AutoPostBack="true"
Style="width: 100%;" OnSelectedIndexChanged="FilterChanged" />
</HeaderTemplate>
<ItemStyle CssClass="centeralign" />
<ItemTemplate>
<asp:Literal runat="server" ID="litType" Text='<%# Eval("call_type").ToString() == "2" ? "Fax" : "Voice" %>' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateField >
<HeaderTemplate>
<label style="text-align:center;display:block;"> Date</label>
</HeaderTemplate>
<ItemTemplate>
<asp:Label DataField="Created_Date" Style="font-size: medium; font-`enter code here`weight: bold;" ID="Created_Date_Id" runat="server" Text='<%# Bind("Created_Date") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.