2014-12-05 94 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