タイトル | : Re^5: DataGridコントロールでの並び替えやフィルタ指定 |
記事No | : 2135 |
投稿日 | : 2005/09/14(Wed) 17:15 |
投稿者 | : なおこ(・∀・) |
お世話になります。
> 見て実行してみたのですけれど、よく分からなくて… > もっと簡単に判定できる方法ってないものでしょうか?
簡単と感じられるかどうかわかりませんが、 こんな方法もあります。
■以下のコードを実行するに当たっての準備 FormにDataGrid1を貼り付け。Button1、Button2、TextBox1を貼り付け。 データベースc:\northwind.mdbを用意。適当なSQLServerから、Ordersテーブルをインポート。
以下、コード =============================================================================== Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '*** DataBaseからデータ取得 ここから Dim nwindConn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=c:\northwind.mdb;") Dim selectCMD As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand ("SELECT * FROM Orders", nwindConn) selectCMD.CommandTimeout = 30
Dim DA As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter DA.SelectCommand = selectCMD
nwindConn.Open()
Dim DS As DataSet = New DataSet DA.Fill(DS, "Orders")
nwindConn.Close() '*** DataBaseからデータ取得 ここまで
Dim DT As DataTable = DS.Tables("Orders") Me.DataGrid1.DataSource = DT
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 'EmployeeIDでソート Dim DT As DataTable = CType(Me.DataGrid1.DataSource, DataTable) Dim rows As DataRow() = DT.Select("", "EmployeeID") Dim newDT As DataTable = DT.Clone() For Each row As DataRow In rows newDT.ImportRow(row) Next
'再表示 Me.DataGrid1.DataSource = newDT Me.DataGrid1.Refresh() End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 'Textboxの値で絞込み & EmployeeIDでソート Dim DT As DataTable = CType(Me.DataGrid1.DataSource, DataTable) Dim rows As DataRow() = DT.Select("Freight >= " + Me.TextBox1.Text, "EmployeeID") Dim newDT As DataTable = DT.Clone() For Each row As DataRow In rows newDT.ImportRow(row) Next
'再表示 Me.DataGrid1.DataSource = newDT Me.DataGrid1.Refresh() End Sub
|