我有一种方法(Win App C#)如下填充DataGridView
,并在我的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 };
}
}
当我键入一个字符时,它的搜索非常好,并且在gridview中更新了数据,但是按退格键清除文本框并开始新的搜索会引发此异常:
在System.Data.Linq.dll中发生了类型为'System.ArgumentNullException'的未处理异常”
值不能为null。参数名称:文字
(注释:aski.Change(TxB_ProitirySearch.Text)
是一个类,用于防止在数据库中保存不需要的字符)
我想知道为什么solution1和2都无济于事。
有人可以帮助我吗?
先谢谢了。
答案 0 :(得分:0)
非常感谢大家,主人。 更改“ PriorityTitle。包含PriorityTitle?包含?”不适用于我,但使用其他指南,我将类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 };
}
}
,现在运行良好。再次感谢大家。
答案 1 :(得分:0)
对我来说,问题是 DI 机制创建了 UrlHelper
实例,导致该实例的所有属性都为 null,包括 routeCollection
和 requestContext
,通过传递UrlHelper 实例直接指向需要它的方法。
答案 2 :(得分:-2)
解决方案1和2没有帮助,因为该异常是事先引发的。
我猜在aski.Change()方法中。
尝试
if(IsSearching &&!string.IsNullOrEmpty(TxB_ProitirySearch.Text))