2013-12-18 24 views
2

我試圖在gridview中搜索數據庫。當我在文本框中鍵入任何東西我得到這個錯誤:當我在文本框中輸入RowFilter時出現語法錯誤

syntax error missing operand before 'like' operator

這是代碼:

private void txtGrid_TextChanged(object sender, EventArgs e) 
{ 
    DataView dv = new DataView(dt); 
    dv.RowFilter = ""+cbGrid.Text + " like '%" + txtGrid.Text + "%'"; 
    gridPlayers.DataSource = dv; 
} 

我認爲這可能是',但我已經搜索並閱讀所有其他相關問題我能找到。

+1

cbGrid.Text的內容是什麼? – Steve

+1

當'cbGrid.Text'是一個空字符串時,可能是函數觸發。 – gunr2171

+1

您需要爲該字符串構建解析器,以便可以擦除RowFilter的任何「非法」字符。 – krillgar

回答

1

聽起來像cbGrid.Text是一個空字符串。如果缺少操作數,那是因爲它沒有提供(它是空白的)。

一個可能的解決方案是確保只在該值不爲空時運行過濾器,或者將其設置爲默認值。

private void txtGrid_TextChanged(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrWhiteSpace(cbGrid.Text))  
    { 
     // only run when not empty 
     DataView dv = new DataView(dt); 
     dv.RowFilter = ""+cbGrid.Text + " like '%" + txtGrid.Text + "%'"; 
     gridPlayers.DataSource = dv; 
    } 
} 
+0

你完全正確,錯誤主要發生,因爲組合框開始空......這是很好的解決方案。 但是,當我在我的三行之一搜索,他們都是三個nvarchar(30) – user3116738

+0

而我剛剛發現我的拼寫錯誤,我將該行添加到組合框,並修復了問題... – user3116738

+0

非常感謝你們 :) – user3116738

相關問題