我正在尝试根据条件在名称旁边放置一个 *。
我的代码:
<asp:Label ID="lblOne" runat="server" Text= '<%# Eval("name") + ((Eval("StatusId").Equals(0) && Eval("assignfilename") == null) ? " *" : "") %>' > </asp:Label>
谢谢
BB
我正在尝试根据条件在名称旁边放置一个 *。
我的代码:
<asp:Label ID="lblOne" runat="server" Text= '<%# Eval("name") + ((Eval("StatusId").Equals(0) && Eval("assignfilename") == null) ? " *" : "") %>' > </asp:Label>
谢谢
BB
我对内联代码不是很熟悉,而且您的代码似乎有点复杂。但我还需要连接一个 Eval("record") 和一个文本。因此,要回答有关如何连接的问题,& 符号对我有用。
'<%# Eval("name") & " *" %>'
希望这对任何人都有帮助。
如果您要突破内联代码可以轻松处理的极限,您总是可以编写一个函数。然后您可以执行以下操作:
<asp:Label ID="lblOne" runat="server" Text= '<%# EmitSomeText(Eval("name"), Eval("StatusId"), Eval("assignfilename")) %>' />
这使您可以将复杂的表达式分解为所需的多行,这可能会不那么尴尬。您可以在 CodeBehind 或任何其他类中使用函数。
如果您要绑定到您有权访问的类,则可以添加一个只读属性。然后您可以执行类似 Eval("MyNewProperty") 的操作。
我用它来公开我需要重复使用的格式。例如,Customer.CustomerFullName 可能返回姓氏,第一个分隔为逗号(智能处理缺少一个或另一个或两者的情况)加上可选标题,因为也许我的客户是医疗人员,其中一些拥有博士学位和医学博士。
对于简单的一次性场景,代码隐藏功能可以正常工作。
您可能还需要考虑将它们编码为基础对象中的属性。
例如,如果生成的文本将在多个实例中使用,则您需要使用 Eval 以不同的形式或控件对函数进行多次编码。
我会在数据对象上创建一个属性,例如 NameWithStatusStar,然后您的标签可以使用 Eval("NameWithStatusStar") 中的代码直接绑定到该属性
这比一系列表达式更具描述性和可重用性,而且更容易更改(例如添加另一个字段、更改公式等)
你可以这样做:
Text='<%#"CustomText "+Eval("Name")%>'
Text='<%# string.Concat(Eval("FirstName"), " ", Eval("LastName"))%>'
这在我的项目中对我有用。在这里找到它: