2011-11-30 77 views
2

我在这里再次提问。我希望有人会回答这个问题。DatagridView搜索Winform - C#

所以我有一个datagrid视图,它有我的数据库中的值。我的表单中有一个搜索按钮,用于打开一个新表单,然后出现一个文本框,您可以编写要搜索的字符串。问题是,如何才能搜索和更新我的datagridview。

for ex。我的数据网格视图具有以下值:

名称: 亚当·刘易斯, 亚当·桑德勒, 贾斯汀·比伯, 丽贝卡·布莱克

,如果我只搜索“亚当”后,我点击确定,即第2个形式被关闭 我的datagrid视图将更新,并且只会显示名称上有adam的名称。

名称: 亚当·刘易斯, 亚当·桑德勒

**我的DataGrid的值是由数据表的约束。

如果你不明白这个问题,只要在下面留言,我会把我的gui的图片,如果这将有所帮助。非常感谢STACKOVERFLOW!

它看起来像这样... enter image description here enter image description here

这里有一个视频例子: http://www.youtube.com/watch?v=1OjZwBqVSVI

+0

数据如何绑定到datagridview? LINQ或数据表或集合。 BindingSource的? –

回答

3

虽然你需要什么帮助?总的想法是这样的,你希望能够从你的搜索表单中控制你的主表单。你可以这样做:

在主窗体你两件事情落实UpdateDatatable和搜索按钮单击添加事件处理程序:

private void Search_Click(object sender, EventArgs e) 
{ 
     SearchForm mySearchForm = new SearchForm(); 
     mySearchForm.SetMainForm(this); 
     mySearchForm.Show(); 
} 
public void UpdateDatatable(string searchWord) 
{ 
//write your own code to update your datagridview by updating the datatable, filtering the datatable or creating a new datatable by using the parameter searchWord. I am saying datatable because I assume your datagridview is bound to a datatable. 
} 

在搜索表单:

public partial class SearchForm : Form 
{ 
    private Form mainForm; 
    public SearchForm() 
    { 
     InitializeComponent(); 
    } 
    public void SetMainForm(Form fromMainForm) 
    { 
     mainForm = fromMainForm; 
    } 

    private void txtSearchWord_TextChanged(object sender, EventArgs e) 
    { 
     mainForm.UpdateDatatable(txtSearchWord.text); 
    } 
} 

希望这帮助

0

这里是这样做的一种方法:

  • 作出的公共财产父表格
  • 此属性应该将set-accessor设置为public
  • 应该是数据源为您的数据网格
  • 的所有操作,以搜索和管理应在此属性只
  • 例如: - 如果你要绑定一个数据表中的网格,然后在子窗体中,您可以访问父窗体的此公共属性并对其进行过滤(可能使用LinQ或DataTable选择&过滤器方法)
  • 通过这样做,数据网格将自动更新;如果源被修改
  • 但保证有一个重置选项或原始源可用,适用

这是做事,而不是最佳方式的粗暴的方式,但它是一个可行的。

希望这会有所帮助。