現在、デバイスに関する基本情報を返す特定の場所、所有者などを検索できるアプリケーションがあります。私はこの情報をSQLクエリを介して取得し、DataSetに配置して、DataGridViewオブジェクトに配置します。私は、検索条件とDataGridViewオブジェクトのデータを削除するClearボタンを実装しようとしています。ヘッダーを失うことなくDataSetにバインドされたDataGridViewをクリアするVB.NET
DataGridViewがDataSetにバインドされているため、残念ながらDataGridView.Rows.Clear()
を使用することはできません。 DataGridView.DataSource = Nothing
を使用するのは難しいですが、これは表示されたデータを削除するだけでなく、DataGridView用に作成した列のヘッダーも削除するためです。私はDataGridView.Refresh()
とDataGridView.AutoGenerateColumns = false
のようないくつかのソリューションを試しましたが、これまでのところ列ヘッダーが削除されています。
これは、DataGridViewオブジェクトに行を追加するために使用しているコードです。
Dim con As New SqlClient.SqlConnection(getConnectionString)
Dim cmd As New SqlCommand("SELECT asset.assetID, owner.ownerName, model.brand, asset.modelID, deviceOwner.serialNumber, deviceOwner.location, asset.dateAssessed from asset
join deviceOwner on asset.assetID = deviceOwner.assetID
join owner on deviceOwner.ownerID = owner.OwnerID
join model on asset.modelID = model.modelID where asset.dateAssessed = @checkDate", con)
cmd.Parameters.AddWithValue("@checkDate", searchEnterDate.Text.ToString)
con.Open()
Dim myDA As New SqlDataAdapter(cmd)
myDA.Fill(myDataSet, "MyTable")
displayResults.DataSource = myDataSet.Tables("MyTable").DefaultView
con.Close()
con = Nothing
私は私が必要な場合はクリアボタンを使用しますが、まだ表示列ヘッダを検索し続けることができるように列ヘッダーを削除せずにDataGridViewのから行をクリアすることを可能にするソリューションを探しています。
をDataTableを列ヘッダーだけで作成し、それを「空白」にしたい場合はDataSourceとして割り当てますか? –
colヘッダーが同じ場合は、クエリが本質的に同じでフィルタリングされている可能性があります。新しいクエリを実行するのではなく、 'DefaultView.RowFilter'を使うことができます。 – Plutonix
私は、DataTableから派生したDataViewを使用し、必要に応じてフィルタを設定します。 – rheitzman