2016-03-08 78 views
0

下面的代码工作,但我正在寻找更复杂的东西,那就是当我在定义的文本框中键入第二个名字或姓氏的字符时,整个名称(名字,第二名或姓氏)​​在DB中的单个列(“Nombre_Doctor”)中,所以它只是过滤它搜索所有列中的单字符。在DatagridView&FIlters中的文本框搜索内容

或者如何将它改变为当我放置在整个表上的任何值(数字或字符),并过滤它(再次填充DataGridView),导致在代码中你可以看到它Select *(all )从医生(表)WHERE Nombre_Doctor(只有一列)...等

非常感谢你的进步。

LC

private void txtsearchpa_KeyUp(object sender, KeyEventArgs e) 
{ 
    con.Open(); 
    SqlCommand cmd = con.CreateCommand(); 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = "Select * from [DOCTORS] where Nombre_Doctor like ('" + txtsearchdr.Text + "%')"; 
    cmd.ExecuteNonQuery(); 
    DataTable dt = new DataTable(); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(dt); 
    DGV1.DataSource = dt; //DGV = DataGridView 

    con.Close(); 
} 
+0

所以你想在“文本框”中输入“文本”,并且网格应该过滤掉除“文本”出现在*任何*列的所有行,更正? – OhBeWise

+0

不,它必须过滤该列中[文本框]的任何“文本”,或者甚至必须过滤所有列中[文本框]的任何“文本”和/或“数字”。 –

回答

0

如果你想要做的是过滤基于搜索你的GridView的数据,我的建议是: 您有一个列表或者你把所有的数据的集合。我有这样的例子:

IEnumerable<Product> ListProduct = from Prod in LstProducts where Prod.Description.StartsWith(txtFind.Text) select Prod; 
    dataGridView1.Rows.Clear(); 

    foreach (var item in ListProduct) 
     this.dataGridView1.Rows.Add(item.Id, item.Status, item.Description, tipo.Price); 

和过滤你想要(说明),并使用你想要的过滤器(StartsWith)列中的信息,但对于这一点,你需要有一个对象(LstProducts)的列表。我希望它有帮助。