“值不能为空。\ r \ n参数名称:文本”

时间:2018-07-22 21:58:16

标签: c#

我有一种方法(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都无济于事。

有人可以帮助我吗?

先谢谢了。

3 个答案:

答案 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,包括 routeCollectionrequestContext,通过传递UrlHelper 实例直接指向需要它的方法。

答案 2 :(得分:-2)

解决方案1和2没有帮助,因为该异常是事先引发的。

我猜在aski.Change()方法中。

尝试

if(IsSearching &&!string.IsNullOrEmpty(TxB_ProitirySearch.Text))