|
昨日の応用と、マニュアルのサンプルコードを応用すると
こんな感じで出来ます。
※ 理解してないWeb上のサンプルコードを流用するのは
誤動作の原因になり危険で、お勧めできませんよ・・・
(例えば、お客さんから「不具合の原因を説明しろ」って言われても説明できないでしょ)
Dim csvRecords As New System.Collections.ArrayList()
'CSVファイル名
Dim csvFileName As String = "C:\test.csv"
'Shift JISで読み込む
Dim tfp As New FileIO.TextFieldParser(csvFileName, _
System.Text.Encoding.GetEncoding(932))
'フィールドが文字で区切られているとする
'デフォルトでDelimitedなので、必要なし
tfp.TextFieldType = FileIO.FieldType.Delimited
'区切り文字を,とする
tfp.Delimiters = New String() {","}
'フィールドを"で囲み、改行文字、区切り文字を含めることができるか
'デフォルトでtrueなので、必要なし
tfp.HasFieldsEnclosedInQuotes = True
'フィールドの前後からスペースを削除する
'デフォルトでtrueなので、必要なし
tfp.TrimWhiteSpace = True
While Not tfp.EndOfData
'フィールドを読み込む
Dim fields As String() = tfp.ReadFields()
'保存
csvRecords.Add(fields)
End While
'後始末
tfp.Close()
' DataTableの作成(仮に"ImageTable"って名前にしておく)
Dim table As DataTable = New DataTable("ImageTable")
' DataColumn, DataRow オブジェクトを作っておく
Dim column As DataColumn
Dim row As DataRow
' DataColumnを作って DataTableに追加
column = New DataColumn()
column.DataType = System.Type.GetType("System.String")
column.ColumnName = "name"
column.ReadOnly = True
column.Unique = True
table.Columns.Add(column)
' 2つ目のDataColumn作成
column = New DataColumn()
column.DataType = System.Type.GetType("System.String")
column.ColumnName = "image"
column.AutoIncrement = False
column.Caption = "ParentItem"
column.ReadOnly = False
column.Unique = False
table.Columns.Add(column)
' DataSetを作成.
Dim DataSet As DataSet
DataSet = New DataSet()
'DataSetに DataTable を指定
DataSet.Tables.Add(table)
' 今回は列番号1と2が必要
' csvの内容をDataTableに追加
Dim strName, strImg As String
Dim x As Integer
For x = 0 To csvRecords.Count - 1
strName = csvRecords(x)(1) ' DropDownListに表示する名称
strImg = csvRecords(x)(2) ' 画像ファイル名
row = table.NewRow()
row("name") = strName
row("image") = strImg
table.Rows.Add(row)
Next
' ここから先は、DropDownListのDataTextField, DataValueFieldを使います。
' DataTextFieldに"name"
' DataValueFieldに"image"を指定すればできるでしょう。
(DropDownListについてマニュアルを見てください。)
|