0

既存のデータグリッド ビューと検索テキスト ボックスがあります。

検索テキストを入力して、以下の方法 (ストアド プロシージャを使用) に基づいて検索ボタンをクリックすると、検索結果で 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();
}
4

1 に答える 1

1

DataGridView の DataSource をフィルタリングする必要があります...次の方法のように... 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;
    }
}
于 2012-05-09T07:35:35.257 に答える