我希望能够将用户选择的颜色和字体大小应用于Listview的LayoutTemplate中的控件,但不能使用代码块来调整样式(代码块在ItemTemplate中效果很好)。我读过一些文章,说代码块在LayoutTemplate中不起作用(并有第一手经验,它们不起作用)。有人能可靠地允许我调整样式吗?我应该在某些事件处理程序中使用FindControl()并在其中添加样式吗?
最佳答案
您可以尝试将用户控件放在LayoutTemplate内,然后将逻辑移至所述用户控件,如下所示:
<asp:ListView ID="CustomizableList" runat="server">
<LayoutTemplate>
<custom:UserStyles runat="server" />
<div class="user-list-layout">
<asp:PlaceHolder ID="Item" />
</div>
</LayoutTemplate>
<ItemTemplate>
<asp:Label ID="Something" runat="server"
Text='<%# Eval("Something") %>'
CssClass="user-list-something" />
</ItemTemplate>
</asp:ListView>
遵循建议表单Brian Mains的回答,仅使用CSS类。然后,在UserStyles控件中,您可以动态生成一些将要应用的CSS。
<style type="text/css" scoped>
.user-list-layout {
border-color: <%= Profile.FavoriteColor %>;
}
.user-list-something {
font-size: <%= Profile.PreferredFontSizeForSomething %>;
}
</style>
但是请注意,在HTML中不允许将
<style>
标记添加到<body>
,但在所有主流浏览器中都可以使用。在HTML5中允许使用,但仅设置了scoped
属性(有关更多信息,请参见this question)。关于c# - 如何动态设置ASP.net Listview LayoutTemplate的样式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8539296/