2015-12-10 57 views
0

我的表格上有一個網格,列爲ExpirationDate。在網格上方,我有兩個複選框,activeinactive如何在C#中的表格網格列和日期時間之間使用運算符?

當我點擊活動複選框我希望我的網格只顯示過期日期大於或等於今天日期的行。

當我設置的條件是這樣的:

private string OR(string filter) 
{ 
    if (filter != "") 
     return "OR"; 

    return ""; 
} 

private void chbFilter_CheckedChanged(object sender, EventArgs e) 
{ 
    string filter = ""; 
    if (chbAktivan.Checked) 
     filter += ExpirationDate >= DateTime.Today; 
    if (chbNeaktivan.Checked) 
    { 
     filter += OR(filter); 
     filter += ExpirationDate < DateTime.Today; 
    } 

    bsFilter.Filter = filter; 
} 

請,只專注於我的代碼filter += ExpirationDate >= DateTime.Today

錯誤是:

錯誤196運算符 '> =' 不能被應用於類型 'System.Windows.Forms.DataGridViewTextBoxColumn' 和 'System.DateTime的'

的操作數

有什麼想法?

+0

不知道寫你爲什麼要Concat的字符串提供'filter'以表達的結果。我認爲它應該像'filter + = String.Format(「ExpirationDate> ='{0}'」,DateTime.Today);' – ASh

+0

是的,你的代碼正在工作! Tnx人...請輸入其他人的代碼,以便我可以接受答案,因爲我現在不能這樣做:) :) – Nemanja

回答

1

您正在試圖Concat的字符串filter與表達的結果。 ()

但篩選BindingSource的表達應該以文本格式

filter += String.Format(" ExpirationDate >= '{0}' ", DateTime.Today); 
... 
filter += String.Format(" ExpirationDate < '{0}' ", DateTime.Today); 

,如果我記得正確的日期時間值應該內' '

0

嘗試使用此:

filter += "ExpirationDate >= " + DateTime.Today; 
2

就試試這個:

private void chbFilter_CheckedChanged(object sender, EventArgs e) 
{ 
    string filter = ""; 
    if (chbAktivan.Checked) 
     filter += "ExpirationDate >= '{0}'," + DateTime.Today; 
    if (chbNeaktivan.Checked) 
    { 
     filter += OR(filter); 
     filter += "ExpirationDate < '{0}'," + DateTime.Today; 
    } 

    bs.Filter = string.Format(filter); 
} 
+0

沒有「{0}」,它將無法正常工作。只需要添加這個。編輯你的代碼,所以我可以這樣說:) 「ExpirationDate> ='{0}'」,DateTime.Today – Nemanja

+0

完成,你好我也已經把答案放在你的'如何使用多個事件處理程序text_changed在C#中? '問題請檢查。 –

+0

是的,我現在檢查過,它也是正確的! :)不幸的是,我沒有足夠的聲望投票答案,我只能檢查它。當有人首先給出正確答案時,我檢查了它。上面有些人在你面前正確回答,但我必須感謝你的支持! :) – Nemanja