2011-11-30 74 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選擇&過濾器方法)
  • 通過這樣做,數據網格將自動更新;如果源被修改
  • 但保證有一個重置選項或原始源可用,適用

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

希望這會有所幫助。