2016-06-29 3 views
2

現在、デバイスに関する基本情報を返す特定の場所、所有者などを検索できるアプリケーションがあります。私はこの情報を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のから行をクリアすることを可能にするソリューションを探しています。

+0

をDataTableを列ヘッダーだけで作成し、それを「空白」にしたい場合はDataSourceとして割り当てますか? –

+0

colヘッダーが同じ場合は、クエリが本質的に同じでフィルタリングされている可能性があります。新しいクエリを実行するのではなく、 'DefaultView.RowFilter'を使うことができます。 – Plutonix

+0

私は、DataTableから派生したDataViewを使用し、必要に応じてフィルタを設定します。 – rheitzman

答えて

1

あなたが列を保持しますが、データ「削除」DataTableCloneできます

Dim oldTable As DataTable = CType(displayResults.DataSource, DataView).Table 
Dim emptyTable As DataTable = oldTable.Clone() 
displayResults.DataSource = emptyTable ' or emptyTable.DefaultView 

以上の副作用を引き起こす可能性がある古いテーブルの上にDataRowCollection.Clearを使用:作成についてどのように

oldTable.Rows.Clear() 
+0

クローンは私が考えていたものでした。良いアイデア。 – Bugs

+0

これは私のニーズに完全に合っています。助けてくれてありがとう! dataTableがすでに空白の場合は、エラーが表示されますが、エラー処理を行うことができます。 – Kione

関連する問題