- 題名: Datagridに表示したいフィールド名の取得方法
- 日時: 2004/02/12 22:38:34
- ID: 2487
- この記事の返信元:
- (なし)
- この記事への返信:
- [2519] Re[1]: Datagridに表示したいフィールド名の取得方法2004/02/15 0:53:54
- ツリーを表示
こんばんは、Michiさん。ピラルクです。
計算量やメモリの使い方において非常に荒っぽい(^^;
コードですが以下のようにとか。
TableStyleを使うともう少し穏やかに出来るかも。
'FormにCheckedListBox1とDataGrid1を各1個貼る
Private m_dt_ORG As New DataTable()
Private Sub Form1_Load( _
ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'オリジナルの全カラム有りDataTableを作成
Dim da As New OleDbDataAdapter("select * from T_TBL", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;")
da.Fill(m_dt_ORG)
'カラムの選択リストを作成
Dim col As DataColumn
For Each col In m_dt_ORG.Columns
CheckedListBox1.Items.Add(col.ColumnName, CheckState.Checked)
Next
'初回表示で呼び出し
OnViewColumnChangeRequest(Nothing, Nothing)
'Check/Uncheckイベントハンドラ設定
AddHandler CheckedListBox1.ItemCheck, AddressOf OnViewColumnChangeRequest
End Sub
Private Sub OnViewColumnChangeRequest( _
ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs)
'オリジナルの全カラム有りDataTableをまるっぽCopy
Dim dt_Choice As DataTable = m_dt_ORG.Copy()
'リストをナメて、Check無しカラムをRemove
Dim i As Integer
Dim isChecked As Boolean
For i = 0 To CheckedListBox1.Items.Count - 1
If Not e Is Nothing AndAlso i = e.Index Then
isChecked = (e.NewValue = CheckState.Checked)
Else
isChecked = CheckedListBox1.GetItemChecked(i)
End If
If Not isChecked Then
dt_Choice.Columns.Remove(CStr(CheckedListBox1.Items(i)))
End If
Next
'DataGridにデータ表示
DataGrid1.DataSource = dt_Choice
'(!)Scroll状態とかはResetされるがそれは諦めてもらう(--;
End Sub
分類:[.NET]
はじめまして、Michi(未知)です。
VB,VB.NET共に、ビギナー中のビギナーです。
今、ADO.NETによるデータベースに挑戦中です。
うまく表現できないのですが、許してください。
「ユーザーが、DATAGRIDに表示するフィールドをDATATABLEから選択出来る様に
したい」と思っています。
ヒントを何方か戴けないでしょうか?