C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: datatableの列属性設定


(過去ログ 144 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■84318 / inTopicNo.1)  datatableの列属性設定
  
□投稿者/ さ (1回)-(2017/06/14(Wed) 12:12:55)

分類:[VB.NET/VB2005 以降] 

【環境】VisualStudio2017/VB.net

お世話になります。

datatableの列属性にGetType?でColorを設定する事は可能なのでしょうか?
調べてみたのですが見つける事ができませんでした。
設定ができるのであれば、その方法やサイト等教えて頂けると大変うれしいです。

宜しくお願い致します。
引用返信 編集キー/
■84320 / inTopicNo.2)  Re[1]: datatableの列属性設定
□投稿者/ 魔界の仮面弁士 (1322回)-(2017/06/14(Wed) 12:26:33)
No84318 (さ さん) に返信
> datatableの列属性にGetType?でColorを設定する事は可能なのでしょうか?

table1.Columns.Add("BackColor", GetType(Color))

とか。
引用返信 編集キー/
■84321 / inTopicNo.3)  Re[2]: datatableの列属性設定
□投稿者/ さ (2回)-(2017/06/14(Wed) 12:55:29)
No84320 (魔界の仮面弁士 さん) に返信
> ■No84318 (さ さん) に返信
>>datatableの列属性にGetType?でColorを設定する事は可能なのでしょうか?
>
> table1.Columns.Add("BackColor", GetType(Color))
>
> とか。

うまくいきました!
敗因はStringをマネて「table1.Columns.Add("BackColor", Type.GetType("Color"))」と記述していた事でした。
ありがとうございました!


よっしゃ!と思ったところ
「DGV1.Rows(0).Cells(0).Style.ForeColor = row("BackColor")」と記述したところ、型'DataRow'の値を'Color'に変換できませんと怒られてしまいました。
引用返信 編集キー/
■84322 / inTopicNo.4)  Re[3]: datatableの列属性設定
□投稿者/ 魔界の仮面弁士 (1323回)-(2017/06/14(Wed) 13:10:49)
No84321 (さ さん) に返信
> 「DGV1.Rows(0).Cells(0).Style.ForeColor = row("BackColor")」
> 型'DataRow'の値を'Color'に変換できませんと怒られてしまいました。

(1) "BackColor" フィールドの値を ForeColor プロパティに割り当てるのですか?

(2) DGV1.Rows(0).Cells(0) ではなく、DGV1(0, 0) を使うべきです。

(3) row("BackColor") が DataRow と解釈されたようですが、そもそも
  row のデータ型は何になっていますか?
  row As DataRow や As DataRowView では無いのでしょうか?

(4) row が As DataRow だとすれば、右辺の型を明示的変換するべきです。たとえば
  = row.Field(Of Color)("BackColor") あるいは
  = DirectCast(row("BackColor"), Color) のように。
引用返信 編集キー/
■84323 / inTopicNo.5)  Re[4]: datatableの列属性設定
□投稿者/ さ (3回)-(2017/06/14(Wed) 13:43:35)
No84322 (魔界の仮面弁士 さん) に返信

早速のご回答ありがとうございます。

> (1) "BackColor" フィールドの値を ForeColor プロパティに割り当てるのですか?
backcolorではなく文字色をテーブル列に設定なのでForeColorの凡ミスでした。

> (3) row("BackColor") が DataRow と解釈されたようですが、そもそも
>   row のデータ型は何になっていますか?
>   row As DataRow や As DataRowView では無いのでしょうか?
まさにその通りDataRowです。

> (4) row が As DataRow だとすれば、右辺の型を明示的変換するべきです。たとえば
>   = row.Field(Of Color)("BackColor") あるいは
>   = DirectCast(row("BackColor"), Color) のように。


下記のように記述してみたのですが

Dim tbl As DataTable
tbl = New DataTable("ColorTable")
tbl.Columns.Add("ID", Type.GetType("System.String"))
tbl.Columns.Add("Color", GetType(Colors))

Dim row() As DataRow
row = tbl.Select("ID = '1'")

DGV1(0, 0).Style.ForeColor = row.Field(Of Color)("Colors") --@
DGV1(0, 0).Style.ForeColor = DirectCast(row("Colors"), Color) --A

@では「FieldはDataRow()のメンバーではありません」
Aではrow("Colors")で「DataRowの値をColorに変換できません」
のエラーとなりました。


もう少し考えてみます。
引用返信 編集キー/
■84324 / inTopicNo.6)  Re[5]: datatableの列属性設定
□投稿者/ Hongliang (551回)-(2017/06/14(Wed) 13:59:38)
>>(3) row("BackColor") が DataRow と解釈されたようですが、そもそも
>>  row のデータ型は何になっていますか?
>>  row As DataRow や As DataRowView では無いのでしょうか?
> まさにその通りDataRowです。

> Dim row() As DataRow
> row = tbl.Select("ID = '1'")

rowはDataRow型ではなくDataRow()型になってますよ。
配列なので、その中から一つのDataRowを取り出す必要があります。
Dim r As DataRow = row(0)
みたいに。
// 配列なので、変数名はrowよりもrowsの方がわかりやすいですね。

引用返信 編集キー/
■84325 / inTopicNo.7)  Re[6]: datatableの列属性設定
□投稿者/ さ (4回)-(2017/06/14(Wed) 14:39:05)
No84324 (Hongliang さん) に返信> rowはDataRow型ではなくDataRow()型になってますよ。
> 配列なので、その中から一つのDataRowを取り出す必要があります。
> Dim r As DataRow = row(0)
> みたいに。
> // 配列なので、変数名はrowよりもrowsの方がわかりやすいですね。

DataRow()型になっていたのには全く気が付いていませんでした。
DataRow型する事で解決しました。

魔界の仮面弁士様/Hongliang様ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -