Eval()如果为空则显示自定义值

本文关键字:显示 自定义 如果 Eval | 更新日期: 2023-09-27 18:14:53

<td>
    <asp:Label ID="TypeOfPaintingLabel" runat="server"
               Text='<%# Eval("TypeOfPainting") %>' />
</td>

有人知道这是怎么回事吗?如果没有提供给TypeOfPainting的值,我想显示"NA"

Eval()如果为空则显示自定义值

通过创建public method您可以像

一样轻松完成此任务
public string testbind(object myvalue)
{
  if (myvalue == null)
  {
     return "NA value";
  }
  return myValue.ToString();
}

标签代码:

<asp:Label ID="TypeOfPaintingLabel" Text='<%# testbind(Eval("TypeOfPainting")) %>' runat="server"></asp:Label>

也可以用

<%#(String.IsNullOrEmpty(Eval("TypeOfPainting").ToString()) ? "NA" : Eval("TypeOfPainting"))%>

你必须遵循这种类型的场景。

你的控制是runat="server"为什么你不控制在代码背后的值?

If (string.IsNullOrEmpty(TypeofPaintingValue))
{
  TypeofPainting.Text="NA";
}

你可以试着这样做:

<%#(string.IsNullOrEmpty(Eval("TypeOfPainting").ToString()) ? "NA" : Eval("TypeOfPainting"))%>

你也可以从数据库端设置这些

ISNULL(TypeOfPainting,'NA') AS TypeOfPainting

我建议只在SQL中这样做:

使用ISNULL(expression, value_if_expression_is_null)

或者

COALESCE(expression, expression2, expression3)

的例子:

SELECT
  Name, DOB,
  (CASE WHEN Address1 IS NULL THEN 'NA' ELSE Address1 END) AS Address1,
  (CASE WHEN Address2 IS NULL THEN 'NA' ELSE Address2 END) AS Address2,
  ...
FROM Users

SELECT 
  Name, DOB, Address1, 
  coalesce(Address2,'NA'), coalesce(City,'NA'), 
  coalesce(State,'NA'), coalesce(Zip,'NA')
FROM Users