2012-05-09 12 views
0

I既存のDataGridViewと、検索テキストボックスを持っています。私は、検索テキストを入力し、(ストアドプロシージャを使用して)、以下の方法に基づいて検索ボタンをクリックすると検索とリロードのDataGridView

、私はそれが自動検索結果でのDataGridViewをリロードしてもらいたいです。

どうすればこの問題を解決できますか?

public static void searchAny(String searchFields, String tblName, String connectionString, SqlCommand tblscmd, SqlDataAdapter tbldataadaptor, DataTable tbldatatable, SqlCommandBuilder cmbuilder, DataGridView DataGridViewName) 
{ 
    using (SqlConnection tblconn = new SqlConnection(connectionString)) 
    { 
     tblconn.Open(); 
     SqlCommand tblcmd = new SqlCommand(); 
     tblcmd.Connection = tblconn; 
     tblcmd.CommandType = CommandType.StoredProcedure; 
     tblcmd.CommandText = "usp_searchany"; 
     tblcmd.Parameters.Add("@stringToFind", SqlDbType.NVarChar); 
     tblcmd.Parameters["@stringToFind"].Value = "%" + searchFields + "%"; 
     tblcmd.Parameters.Add("@table", SqlDbType.NVarChar); 
     tblcmd.Parameters["@table"].Value = tblName; 
     cmbuilder.DataAdapter = tbldataadaptor; 
     tbldatatable.DefaultView.AllowDelete = true; 
     tbldatatable.DefaultView.AllowEdit = true; 
     tbldataadaptor.Fill(tbldatatable); 
     DataGridViewName.ReadOnly = false; 
     DataGridViewName.DataSource = tbldatatable; 
     tblconn.Close(); 
    } 
} 


private void SearchButton_Click(object sender, EventArgs e) 
{ 
    tbldatatable.Clear(); 
    String searchFields = SearchTextBox.Text; 
    GeneralMethods.searchAny(searchFields, "tblClients", connectionString, tblcmd, tbldataadaptor, tbldatatable, cmbuilder, dataGridView); 
    dataGridView.DataSource = tbldatatable; 
    dataGridView.Refresh(); 
} 
+1

をフィルタリングすることができますが、ここで問題ですか?グリッドは満たされていますか? – Kangkan

+0

私は上記の方法を使用し、検索結果を返しませんし、datatable/datagridviewの更新がありません。 – kyusan93

+2

データグリービューをクリアし、バインドして更新する必要があります。 – Kangkan

答えて

1

あなたは、次の方法のように...あなたのDataGridViewのDataSourceをフィルタリングするために持っている...可能であるCellEndEidtから

...クリアし、バインドまたはDataGridViewのをリフレッシュするために必須ではありません。.. ..

単にあなたが何のDataGridViewのDataSource

private void MyDataGrid1_CellEndEdit(object sender, System.Windows.Forms.DataGridViewCellEventArgs e) 
{ 
    if (e.RowIndex == 0) 
     { 
     if (myDataGrid1.CurrentCell.Value.ToString().Trim().Length > 0) 
     { 
      MyFilterString="Field1=Feild2 and Field3>Field4"; 
     } 
     MyDtb1.DefaultView.RowFilter = FilterString; 
    } 
} 
関連する問題