我希望能够将用户选择的颜色和字体大小应用于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/

10-11 07:43