我有一个表单,其中一个简单的gridview由数据库中的表填充,其中包含TicketID,Name,Company,Product等列。现在我想添加一个搜索功能,以便用户可以按客户名称或公司搜索或TicketID。
我该怎么做?我想在数据网格上方放置一个combox框,文本框和一个简单的“搜索”按钮。例如,当用户选择TicketID时,在文本框中输入“1”并按“搜索”,它应刷新数据网格,其中TicketID = 1。
现在我对如何实现它一无所知。谷歌搜索但没有发现任何有用的东西。所以在这方面的任何帮助都将受到赞赏。
问候。
答案 0 :(得分:8)
您可以查看:
BindingSource bs = new BindingSource();
bs.DataSource = dataGridView1.DataSource;
bs.Filter = columnNameToSearch + " like '%" + textBox1.Text + "%'";
dataGridView1.DataSource = bs;
这将显示包含您选择的列中textbox1的文本的记录。我完全按照你的要求做了:)
答案 1 :(得分: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
答案 2 :(得分:1)
BindingSource bs = new BindingSource();
bs.DataSource = dgrid.DataSource;
bs.Filter = "Full_Name like '%" + tsptxt_search.Text + "%'";
dgrid.DataSource = bs;
这适合我。
答案 3 :(得分:1)
BindingSource bs = new BindingSource();
bs.DataSource = dataGridView1.DataSource;
bs.Filter = "[database column Name To Search] like '%" + textBox1.Text + "%'";
dataGridView1.DataSource = bs;
答案 4 :(得分:0)
你需要什么,过滤,而不是搜索......搜索突出显示集合中的正确行
将网格数据源设置为DataTable.Select方法
的结果dtData.Select("TicketID = 1")
另请查看此post
答案 5 :(得分: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;
答案 6 :(得分:0)
为搜索输入创建文本框,并在其TextChanged事件
上使用以下代码varchar