我有一个填充DataGridView
的方法(Win C#),如下所示,并在我的TxB_ProitirySearch_TextChanged
事件中使用:
void PrioFillGrid(bool IsSearching= false)
{
if (IsSearching)
{
var ddd = from p in db.PDP_Priorities
where p.PriorityTitle.Contains(aski.Change(TxB_ProitirySearch.Text))
orderby p.ID descending
select new { p.ID, Title = p.PriorityTitle };
if (ddd.Count() > 0) // Solution1
{
DG_Priority.DataSource = ddd;
}
if (ddd != null) // Solution2
{
DG_Priority.DataSource = ddd;
}
else
{
DG_Priority.DataSource = from p in db.PDP_Priorities
orderby p.ID descending
select new { p.ID, Title = p.PriorityTitle };
}
}
else
{
DG_Priority.DataSource = from p in db.PDP_Priorities
orderby p.ID descending
select new { p.ID, Title = p.PriorityTitle };
}
}
当我输入一个字符时,它会很好地搜索并更新网格视图中的数据,但按backspace清除文本框并开始新的搜索会引发以下异常:
在System.Data.Linq.dll中发生'System.ArgumentNullException‘类型的未处理异常“
值不能为空。参数名称: text
(备注:aski.Change(TxB_ProitirySearch.Text)
是一个防止在数据库中保存不需要的字符的类)
我想知道为什么solution1和2都不起作用。
有谁能帮帮我吗?
提前谢谢。
发布于 2018-07-24 04:52:37
非常感谢大家,大师们。更改"PriorityTitle.Contains to PriorityTitle?.Contains?“不适用于我,但使用其他指南,我更改了类aski.change(),如下所示:
public string Change(string k)
{
if (k==string.Empty)
{
return null;
}
else
{
//some codes...
return str;
}
}
然后修改了我的"PrioFillGrid()“方法,如下所示:
void PrioFillGrid(bool IsSearching= false)
{
if (aski.Change(TxB_ProitirySearch.Text) == null)
{
DG_Priority.DataSource = from p in db.PDP_Priorities
orderby p.ID descending
select new { p.ID, Title = p.PriorityTitle };
}
else if (IsSearching && aski.Change(TxB_ProitirySearch.Text) != null)
{
var ddd= from p in db.PDP_Priorities
where p.PriorityTitle.Contains(aski.Change(TxB_ProitirySearch.Text))
orderby p.ID descending
select new { p.ID, Title = p.PriorityTitle };
DG_Priority.DataSource = ddd;
}
else
{
DG_Priority.DataSource = from p in db.PDP_Priorities
orderby p.ID descending
select new { p.ID, Title = p.PriorityTitle };
}
}
现在运行得很好。再次感谢大家。
发布于 2021-03-03 20:09:21
对我来说,问题是DI机制创建了UrlHelper
实例,这导致该实例的所有属性(包括routeCollection
和requestContext
)都为空,通过将UrlHelper实例直接传递给需要它的方法来解决。
发布于 2018-07-23 06:03:48
解决方案1和2没有帮助,因为异常是事先抛出的。
我猜是在aski.Change()方法中。
试一试
if (IsSearching && !string.IsNullOrEmpty(TxB_ProitirySearch.Text))
https://stackoverflow.com/questions/51469580
复制相似问题