簡體   English   中英

“值不能為空。\\r\\n參數名稱:文本”

[英]“Value cannot be null.\r\nParameter name: text”

我有一個方法(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”的未處理異常”

值不能為空。 參數名稱:文本

(注釋: aski.Change(TxB_ProitirySearch.Text)是一個防止不需要的字符保存在數據庫中的類)

我想知道為什么解決方案 1 和 2 都無濟於事。

有人可以幫我嗎?

提前致謝。

非常感謝你們,大師們。 改變“PriorityTitle.Contains 到 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 };
        }
    }

現在運行良好。 再次感謝每一個身體。

對我來說,問題是 DI 機制創建了UrlHelper實例,這導致該實例的所有屬性都為 null,包括routeCollectionrequestContext ,通過將 UrlHelper 實例直接傳遞給需要它的方法來解決。

解決方案 1 和 2 沒有幫助,因為異常是事先拋出的。

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

嘗試

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM