- PR -

dataTableを配列で扱いたい。

1
投稿者投稿内容
ヤマザキ
常連さん
会議室デビュー日: 2004/05/10
投稿数: 22
投稿日時: 2004-06-11 13:21
お世話になってます。
また、お知恵をお借りにまいりました。

以下のようにGridコントロールを使用していますが、
例えば3つのGridがあるとして、カラムや幅その他を、
setColumnというところで一括して指定できるようにし、
最初のロード時に、どのグリッド用かを指定して設定しています。

そこで、2,3のグリッドでも、dataTableを配列で扱えないかと
思料しています。


 Dim dataSet As New dataSet
 Dim dgTableStyle As New DataGridTableStyle
 Dim dataTable1 As dataTable = dataSet.Tables.Add("Grid1")
 Dim dataTable2 As dataTable = dataSet.Tables.Add("Grid2")
 Dim dataTable3 As dataTable = dataSet.Tables.Add("Grid3")

 Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  DataGrid1.ReadOnly = True
  setColumn(1, 0, 50, "銀行", GetType(String))
  setColumn(1, 1, 35, "支店", GetType(String))
   :
  dgTableStyle.AllowSorting = False
  dgTableStyle.MappingName = dataTable1.TableName
  DataGrid1.TableStyles.Add(dgTableStyle)

  DataGrid2.ReadOnly = True
  setColumn(2, 0, 100, "フリガナ", GetType(String))
  setColumn(2, 1, 60, "氏名", GetType(String))
   :
   :

  DataGrid3.ReadOnly = True
   :

 End Sub

 Private Sub setColumn(ByVal TNumber As Integer, ByVal CNumber As Integer, ByVal CWidth As Integer, ByVal CName As String, ByVal ColumnType As System.Type)
  Dim dgColumnStyle As New DataGridTextBoxColumn

Select Case TNumber
   Case 1
    dataTable1.Columns.Add(CName, ColumnType)
   Case 2
    dataTable2.Columns.Add(CName, ColumnType)
   Case 3
    :
  End Select

  dgColumnStyle.MappingName = CName
  dgColumnStyle.HeaderText = CName
  dgColumnStyle.Width = CWidth
  dgTableStyle.GridColumnStyles.Add(dgColumnStyle)

 End Sub


イメージ:
 Dim dataTable() As dataTable = dataSet.Tables.Add

 Private Sub setColumn(ByVal TNumber As Integer, ...
  dataTable(TNumber).Columns.Add(CName, ColumnType)
  :
 End Sub


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-11 13:40
引用:

ヤマザキさんの書き込み (2004-06-11 13:21) より:

イメージ:
 Dim dataTable() As dataTable = dataSet.Tables.Add

 Private Sub setColumn(ByVal TNumber As Integer, ...
  dataTable(TNumber).Columns.Add(CName, ColumnType)
  :
 End Sub


 ???どうしてDataSet.Tables(index As Integer)でアクセスしないの???

コード:
dataSet.Tables.Add("Grid1") 
dataSet.Tables.Add("Grid2") 
dataSet.Tables.Add("Grid3")
Dim dataTables As DataTableCollection = dataSet.Tables
dataTables(0).Columns.Add(...

ヤマザキ
常連さん
会議室デビュー日: 2004/05/10
投稿数: 22
投稿日時: 2004-06-11 14:11
引用:

Jittaさんの書き込み (2004-06-11 13:40) より:

コード:
dataSet.Tables.Add("Grid1") 
dataSet.Tables.Add("Grid2") 
dataSet.Tables.Add("Grid3")
Dim dataTables As DataTableCollection = dataSet.Tables





Jittaさん、ありがとうございます。
DataTableCollection の使い方で、なんか勘違いしてたようです。
#dataSet.Tables.Add("Grid1") も、あくまで変数で設定しようとしてたし。。(汗

おかげさまですんなり解決できました。
1

スキルアップ/キャリアアップ(JOB@IT)