【发布时间】:2023-03-18 12:06:01
【问题描述】:
我正在尝试基于 GridView 中元素的 CSS 类以编程方式切换页面上的样式。我已经在几个普通(非模板化)元素的类属性中成功地做到了这一点,但由于某种原因,它似乎在模板控件中不起作用。 Visual Studio 将数据绑定代码视为不透明的文本(事实上,甚至将其相应地着色为不透明的字符串)。和 不支持以这种方式进行数据绑定?
我在类文档中找不到任何说明这种情况的内容,但另一方面它不起作用,Visual Studio 似乎暗示这是按设计的。
编辑:一个例子。这里声明了一个Gridview,在列定义中,ItemStyle-CssClass属性设置为两个值;一个是硬编码的,另一个取自枚举变量的当前值。假设本例 StyleHelper 为静态类,Festivity 属性为 StyleSelectorEnum 类型,当前值为 StyleSelectorEnum.PartyMode。
<asp:GridView runat="server">
<Columns>
<asp:TemplateField ItemStyle-CssClass="style1 <%= Lib.Web.StyleHelper.Festivity.ToString() %>" />
<ItemTemplate>
<div />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
在此示例中,生成的表将包含带有 td 条目的行,如下所示:
<td class="style1 <%= Lib.Web.StyleHelper.Festivity.ToString() %>" >
在实践中,我希望它看起来像这样:
<td class="style1 PartyMode" >
【问题讨论】:
-
你能发布一些例子吗?
-
您是否使用
!important来覆盖任何未知/看不见的应用样式? -
@MadSkunk 已发布——希望对您有所帮助。
-
@bobthyasian 我不这么认为。这不是选择器匹配失败的问题,而是绑定代码没有被解析。有趣的是,尽管代码中的标识符在 Visual Studio 中像字符串一样着色,但 标签仍然像服务器端脚本一样着色。所以看起来VS仍然看到它?不知道发生了什么。
-
@bwerks 我只是在猜测。这通常是问题所在。
标签: asp.net css visual-studio data-binding gridview