【问题标题】:How to Filter rows based on User Input search value如何根据用户输入搜索值过滤行
【发布时间】:2014-12-05 12:51:49
【问题描述】:

我对本文中的代码有疑问:

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

行内 dv.RowFilter = "col1='" + ss + "' and 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 问题已解决

【问题讨论】:

  • 我不明白你在问什么。
  • @hamed2011:用您的评论编辑您的问题,(发布有问题的代码)
  • 如果您无法发表评论,请重新编辑以使其成为一个完整的问题。
  • 您收到什么错误或有什么问题?
  • 我只想在“名称列”中找到一个名称,但我使用代码及以上并得到空行或具有相同值的 2 行!所以任何真正的代码都可以帮助我

标签: c# sql select


【解决方案1】:

我相信问题在于最后一句话:

 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

编辑:关于行重复,我怀疑数据集中的旧数据。您是否尝试过重新创建数据集或在加载之前将其清除?

并正确查询以确保不会出现数据重复

select distinct name from phone

【讨论】:

  • 我用过它("name='" + ss+"'";) 但我告诉你们,结果 2 行具有相同的值。我想当用户按 Alex 的名字输入 alex 行时只查看并且在 1 行中不重复
  • 您需要的是与众不同的。您可以更改数据库查询或查看stackoverflow.com/questions/3965134/…
  • 在整个表中有一行名称为 alex,此代码显示重复的结果,我们需要区分???我认为代码是错误的......无论如何,有没有更好的代码用于在 c# 中的 datagridview 中使用 sql 选择查询进行搜索?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
  • 2018-07-09
  • 2021-01-18
相关资源
最近更新 更多