- 題名: 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から選択出来る様に
したい」と思っています。
ヒントを何方か戴けないでしょうか?