1

我正在使用这样的 DataTable 选择:

DataRow[] rows = employees.Select("Name LIKE '%" + TB_Search.Text + "%'");

LV_Employees.DataSource = rows;
LV_Employees.DataBind();

我有一个列表视图,我正在检查列表中使用的数据行中包含的值,并且正在检查如下值:

<%# Eval("Title") == DBNull.Value ? "" : Eval("Title") %>

但是当我这样做时,我仍然会收到此错误:

无法将“System.DBNull”类型的对象转换为“System.String”类型。

我也尝试检查Eval("Title") == null并得到相同的错误。我不确定如何检查可以解决此问题的空值。

我也尝试过的事情仍然给出了同样的错误:

(Eval("Title") as string) ?? ""

Convert.IsDBNull(Eval("Title")) ? "" : "test"

string.IsNullOrEmpty(Eval("Title").ToString()) ? "" : "test"

Eval("Title").ToString().IsNullOrEmpty() ? "" : "test"

4

2 回答 2

1

CopyToDataTable应该解决这个问题:

LV_Employees.DataSource = employees.Select("Name LIKE '%" + TB_Search.Text + "%'")
    .CopyToDataTable();
LV_Employees.DataBind();
于 2017-11-17T16:37:37.537 回答
0

在代码隐藏中这样做是可行的,但似乎很奇怪,我不能只在标记代码中进行内联检查。

foreach (DataRow r in rows)
{
    if (r["Title"] == DBNull.Value)
        r["Title"] = "";
}
于 2017-11-17T16:19:47.630 回答