- PR -

DataViewを利用した、複数のテーブルの表示させ方

1
投稿者投稿内容
C#初心者
常連さん
会議室デビュー日: 2005/12/22
投稿数: 24
投稿日時: 2006-01-11 14:19
C#で、2つの異なったDataSetTableをDataViewで一緒に表示させたいのですが、1つのテーブルしか表示されないので、複数のテーブルの表示させ方を教えてください。

dt = ds1.Tables.Add("日付");
dt.Columns.Add("日付", Type.GetType("System.String"));

dt = ds2.Tables.Add("入力項目");
dt.Columns.Add("入力項目", Type.GetType("System.String"));

dv = new DataView(ds1.Tables["日付"]
,"","", DataViewRowState.CurrentRows);

dataGrid1.DataSource = dv;

でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2006-01-11 15:47
こんにちは、でっちです。

残念ながらDataViewに2つのDataTableを連結して表示するような機能はありません。
(DBMSのviewみたいなものをイメージされているのかな?)

手順としては一方のDataTableに列を追加して、他方のDataTableのデータを埋めていく、
と言うものになると思われます。
2通り思いついたのでメモしておきます。

1.表示対象のDataTableに列を追加し、ループで回して他方のDataTableから対応列を探しつつ埋める
2.一つのDataSetに2つのDataTableを格納し、DataRelationを追加して連結。
 子となるDataTable側の列を親となるDataTableに追加する。

具体的なイメージがわかないようでしたら、また質問して下さい。
申し訳ないのですが、今C#初心者さんが書かれているコードでは、ちょっとサンプルも書けないのです

#ds1とds2がなぜ分かれる必要があるのか、日付DataTableと入力項目DataTableを何でつなげば
#良いのかってあたりがちょっとイメージできません。
#きっと各DataTableに連結用のColumnがあるのだろうと予想はできますが...

#ちなみに、DataTable連結処理ってわりと面倒ですし、(体感でですが)低速です。
#データがDBMSにあるならそちらから連結した状態で取得しておいた方が良いように思われます。
C#初心者
常連さん
会議室デビュー日: 2005/12/22
投稿数: 24
投稿日時: 2006-01-11 17:07
現在、タイムカードシステムのようなものを練習で作っています。
DataGridを利用し

日付 出社 退社 就労
16 09:00 18:00 8:00 といった感じで表示させようと考えています。

それで、入力できない箇所(日付、就労)の列は色を変えようと思っています。
そのため、色を変える処理用テーブルと、色を変えない処理テーブルの2つを利用し、表示させようと考えていました。

何かうまい方法とかあれば教えてください。

なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2006-01-11 17:47
お世話になります。

DataGridTableStyle クラス
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemWindowsFormsDataGridTableStyleClassTopic.asp

ReadOnly の設定 や 背景色の変更ができます。
1

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