2014-12-05 92 views
-2

我有問題,關於這篇文章的代碼:如何基於用戶輸入的搜索值過濾行

How to display rows based on search value which works for multiple columns

符合dv.RowFilter =「COL1 ='」 + SS +「'和COL2 > = 10" ;

如何只使用搜索值並在結果中選擇1行?

像我們有一列:名稱和只顯示名稱列中的搜索值?

我的代碼:

private void button3_Click(object sender, EventArgs e) 
{ 
    string ss = searchbox.Text; 
    SqlConnection con = new SqlConnection("Data Source=.; 
          Initial Catalog=db3;Integrated Security=True"); 
    sAdapter = new SqlDataAdapter("select * from phone", con); 
    sAdapter.Fill(sDs, "phone"); 

    DataView dv = sDs.Tables[0].DefaultView; 

    dataGridView1.DataSource = sDs.Tables["phone"]; 
    dv.RowFilter = "name='" + ss; 
} 

@ hamed2011問題解決了

+0

我不明白你在問什麼。 – venerik 2014-12-05 12:55:45

+0

@ hamed2011:編輯你的問題與您的評論,(發佈代碼問題) – 2014-12-05 12:58:23

+0

如果你不能評論,reedit使其成爲一個完整的問題本身。 – 2014-12-05 12:59:46

回答

0

相信在最後一句的問題依賴:

dv.RowFilter = "name='" + ss; 

你忘了關閉的報價。它應該是

dv.RowFilter = "name='" + ss+"'"; 

但是,關於來自附加鏈接的示例請請永遠不要使用字符串連接查詢數據庫。這可能是最常見的安全漏洞。

閱讀關於這裏使用查詢參數:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters%28v=vs.110%29.aspx

編輯:關於行重複,我對數據集中的舊數據suspitions。您是否嘗試重新創建數據集或在加載之前清除它?

和適當的查詢確保沒有數據複製是

select distinct name from phone 
+0

我用它(「名稱='」+ SS +「'」;)但我告訴你們,得到結果2行相同的價值。我希望當用戶輸入亞歷克斯排名亞歷克斯只查看和1行不重複 – hamed2011 2014-12-05 13:28:22

+0

你需要的是明顯的。您可以更改數據庫查詢或在整個表中看到http://stackoverflow.com/questions/3965134/calling-distinct-on-datarow-collection – cyberhubert 2014-12-05 13:32:10

+0

有一行與alex的名稱和此代碼顯示重複的結果,我們需要不同???我認爲代碼是錯誤的...無論如何有沒有更好的代碼使用sql select查詢在c#中的datagridview搜索? – hamed2011 2014-12-05 14:13:53