はBindingSource.Filter
、 にすでにロードされているデータにフィルタを適用しますDataGridView
。したがって、アカウントが表示されていて、1 つの特定のアカウントを探している場合は、そのデータをアカウント番号でフィルター処理します。
はFilter
、別の SQL クエリを実行できません。
そのデータに対して を実行する場合INNER JOIN
は、別の検索を実行して をロードする必要がありますDataGridView
。フィルターを実行したくないように聞こえますが、同じグリッド内のデータに 2 つの別々のセットを表示したいと考えています。
基本的なプロセスは次のとおりです。
- DataGridView を読み込みます
- 使用して、必要なフィルターまたはレコードを選択します
- INNER JOIN で 2 回目の検索を実行します
- 新しいデータで DataGridView をリロードします。
ここで編集して、開始する可能性のあるコードをいくつか示します。
方法: Windows フォーム DataGridView コントロールにデータをバインドする
private void GetData(string selectCommand)
{
try
{
// Specify a connection string. Replace the given value with a
// valid connection string for a Northwind SQL Server sample
// database accessible to your system.
String connectionString =
"Integrated Security=SSPI;Persist Security Info=False;" +
"Initial Catalog=Northwind;Data Source=localhost";
// Create a new data adapter based on the specified query.
dataAdapter = new SqlDataAdapter(selectCommand, connectionString);
// Create a command builder to generate SQL update, insert, and
// delete commands based on selectCommand. These are used to
// update the database.
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
// Populate a new data table and bind it to the BindingSource.
DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
dataAdapter.Fill(table);
bindingSource1.DataSource = table;
// Resize the DataGridView columns to fit the newly loaded content.
dataGridView1.AutoResizeColumns(
DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
}
catch (SqlException)
{
MessageBox.Show("To run this example, replace the value of the " +
"connectionString variable with a connection string that is " +
"valid for your system.");
}
}
private void Button1_Click(object sender, EventArgs e)
{
// Bind the DataGridView to the BindingSource
// and load the data from the database.
dataGridView1.DataSource = bindingSource1;
GetData("select * from Customers");
}
データがグリッドにバインドされたら、ユーザーに何らかのフィルター方法を提供しますが、ユーザーにデータを再度検索してもらいたいとします。そのため、実行する SQL を選択するために何らかの方法でコードを使用する必要があります。したがって、ユーザーの選択に基づいて設定した文字列として SQL を GetData() に渡すことができます。
private void Button1_Click(object sender, EventArgs e)
{
// Bind the DataGridView to the BindingSource
// and load the data from the database.
dataGridView1.DataSource = bindingSource1;
string sqlQuery = string.Empty;
if(your check goes here)
{
sqlQuery = "select * from Customers";
}
else
{
sqlQuery = "your new SQL";
}
GetData(sqlQuery);
}
次に、新しいクエリに基づいてデータを再バインドします。