如何在C#Windows窗体应用程序中搜索数据gridview?

问题描述 投票:3回答:7

我有一个表单,其中一个简单的gridview由数据库中的表填充,其中包含TicketID,Name,Company,Product等列。现在我想添加一个搜索功能,以便用户可以按客户名称或公司或TicketID进行搜索。

我怎样才能做到这一点 ?我想在数据网格上方放置一个combox框,文本框和一个简单的“搜索”按钮。例如,当用户选择TicketID时,在文本框中输入“1”并按“搜索”,它应刷新数据网格,其中TicketID = 1。

现在我对如何实现它一无所知。谷歌搜索但没有发现任何有用的东西。所以在这方面的任何帮助将不胜感激。

问候。

c# winforms gridview datagrid windows-forms-designer
7个回答
9
投票

你可以看看:

BindingSource bs = new BindingSource();
bs.DataSource = dataGridView1.DataSource;
bs.Filter = columnNameToSearch + " like '%" + textBox1.Text + "%'";
dataGridView1.DataSource = bs;

这将显示包含您选择的列中textbox1的文本的记录。我完全按照你的要求做了:)


2
投票

如果你想刷新你的DataSource取决于搜索参数,那么你需要建立一个新的SQL查询依赖于然后“搜索”控件:

你会更好地展示从数据库获取数据的代码, 但这是我用手动SQL查询创建的镜头:

//...
StringBuilder query = new StringBuilder();
query.AppendLine("SELECT TicketID, Name, Company, Product");
query.AppendLine("FROM YourTable WHERE 1=1");
if (txtSearch.TextLength > 0)
{
    query.AppendLine("AND TicketID = @TicketID");
    //Here add sqlparameter with textbox value
}
//... and so on

1
投票
BindingSource bs = new BindingSource(); 
bs.DataSource = dataGridView1.DataSource;
bs.Filter = "[database column Name To Search] like '%" + textBox1.Text + "%'";
dataGridView1.DataSource = bs;

1
投票
BindingSource bs = new BindingSource();
bs.DataSource = dgrid.DataSource;
bs.Filter = "Full_Name  like '%" + tsptxt_search.Text + "%'";
dgrid.DataSource = bs;

这适合我。


0
投票

你需要什么,过滤,而不是搜索......搜索突出显示集合中的正确行

将grid DataSource设置为DataTable.Select方法的结果

dtData.Select("TicketID = 1")

另外看看这个post


0
投票
 DataSet ds;
 DataView dv;

 public Form1()
    {
        InitializeComponent();
        ds = new DataSet();
       dv = new DataView();
    } 

private void Form1_Load(object sender, EventArgs e)
{
    ds=SelectStudents();            
    dv.Table = ds.Tables[0];
    dataGridView1.DataSource = dv; 
}

现在在文本框的text_changed事件中,写下面的代码

dv.RowFilter = "StudentName like '%" + textBox1.Text + "%'";
dataGridView1.DataSource = dv;

0
投票

为搜索输入创建文本框,并在其TextChanged事件上使用以下代码

private void txtSearch_TextChanged(object sender, EventArgs e)
{
    (dataGridView.DataSource as DataTable).DefaultView.RowFilter = string.Format("TicketID like '{0}%' OR Product like '{0}%' OR Name like '{0}%' OR Product like '{0}%'", txtSearch.Text);
}
© www.soinside.com 2019 - 2024. All rights reserved.