gpt4 book ai didi

asp.net - 是否无法以声明方式将 CssClass 属性绑定(bind)到 GridView 中的 ItemStyle 上?

转载 作者:行者123 更新时间:2023-11-28 10:05:09 25 4
gpt4 key购买 nike

我正在尝试根据 GridView 中元素的 CSS 类以编程方式切换页面样式。我已经在几个正常的(非模板化的)元素的类属性中成功地做到了这一点,但由于某种原因它似乎在模板控件中不起作用。 Visual Studio 将数据绑定(bind)代码视为不透明文本(事实上,甚至将其相应地着色为不透明字符串)。数据绑定(bind)不以这种方式支持和吗?

我在类文档中找不到任何说明是这种情况的内容,但另一方面它不起作用,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" >

最佳答案

我找到了我要找的东西。它几乎完全来自 this article讨论了使用 <%$ %> 构造的 ASP.NET 表达式生成器。在我的示例上下文中,解决方案如下。

标记:

<asp:GridView runat="server">
<Columns>
<asp:TemplateField>
<ItemStyle CssClass='<%$ Code: "style1 " + Lib.Web.StyleHelper.Festivity.ToString() %>' />
<ItemTemplate>
<div />
</ItemTemplate>
</asp:TemplateField>
</Columns>

注意事项:

  • 不能以这种方式使用 ItemTemplate 上的 ItemStyle-CssClass 属性。结果文字内容错误。
  • <%$ %> 构造必须填充整个值,这意味着在我的情况下在其中进行字符串构造,而不是“style1 <%$ Code: ... %>”
  • 由于在字符串构造中使用了双引号,因此在这种情况下必须对值使用单引号。

在 web.config 中声明表达式构建器的部分:

<compilation debug="true">
<expressionBuilders>
<add expressionPrefix="Code" type="CodeExpressionBuilder"/>
</expressionBuilders>
</compilation>

类定义本身,放在 app_code 中:

[ExpressionPrefix("Code")]
public class CodeExpressionBuilder : ExpressionBuilder
{
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
{
return new CodeSnippetExpression(entry.Expression);
}
}

现在,结果表中的 td 元素按预期被赋予类“style1 PartyMode”。

此解决方案的全部功劳归功于他博客中的 InfinitiesLoop;我做了很少的工作来适应我的目的。

关于asp.net - 是否无法以声明方式将 CssClass 属性绑定(bind)到 GridView 中的 ItemStyle 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13888592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com