タイトル : Re^5: DataGridコントロールでの並び替えやフィルタ指定 投稿日 : 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 |