我正在使用这样的DataTable选择:
DataRow[] rows = employees.Select("Name LIKE '%" + TB_Search.Text + "%'");
LV_Employees.DataSource = rows;
LV_Employees.DataBind();
我有一个listview,我正在检查我在列表中使用的数据行中包含的值,我正在检查这样的值:
<%# 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"
答案 0 :(得分:1)
CopyToDataTable应解决此问题:
LV_Employees.DataSource = employees.Select("Name LIKE '%" + TB_Search.Text + "%'")
.CopyToDataTable();
LV_Employees.DataBind();
答案 1 :(得分:0)
在代码隐藏中执行此操作有效,但似乎很奇怪我无法在标记代码中进行内联检查。
foreach (DataRow r in rows)
{
if (r["Title"] == DBNull.Value)
r["Title"] = "";
}