2012-05-09 3 views
0

У меня есть существующее 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

Вам необходимо очистить datagridview, связать и обновить. – Kangkan

ответ

1

Вы должны фильтровать DataSource вашего DataGridView в ... как следующим образом ... Это не обязательно, чтобы очистить, связать или обновить DataGridView ...

От CellEndEidt это возможно .. ..

Просто вы можете отфильтровать 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; 
    } 
} 
Смежные вопросы