Проверка на нулевое значение с помощью DataTable.Select
Я использую DataTable выбрать как это:
DataRow[] rows = employees.Select("Name LIKE '%" + TB_Search.Text + "%'");
LV_Employees.DataSource = rows;
LV_Employees.DataBind();
У меня есть просмотр списка, где я проверяю значение, которое содержится в datarows, которые я использую в списке, и я проверяю значение следующим образом:
<%# 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"
2 ответа
CopyToDataTable должен решить проблему:
LV_Employees.DataSource = employees.Select("Name LIKE '%" + TB_Search.Text + "%'")
.CopyToDataTable();
LV_Employees.DataBind();
Выполнение этого в codebehind работало, но кажется странным, что я не могу просто выполнить встроенную проверку в коде разметки.
foreach (DataRow r in rows)
{
if (r["Title"] == DBNull.Value)
r["Title"] = "";
}