- - PR -
1対多のリレーション
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-08-01 16:49
VisualStudio2005でASP.NETサイトを作成しています。
件名通り1対多のDataRelationを組んだ2つのDataTableをDataSet内に持たせ、GridViewのDataSourceにしバインドしたいのですが、 「DataBinding: 'System.Data.DataRowView' には xxxCode という名前のプロパティは含まれません。」 エラーでブレイクしているのでウォッチでDataSet内にxxxCodeカラムを確認すると、存在はしているようです。 そもそも1対多の2つのテーブルのデータをGridViewに表示・編集することはできないのでしょうか?それではGridViewはRDBMSには対応していないということなのでしょうか? わからないことだらけで申し訳ないのですがどうかご教授ください。 [ メッセージ編集済み 編集者: ほえほえ 編集日時 2008-08-01 17:06 ] |
|
投稿日時: 2008-08-01 17:16
さかもとと申します。
それはネストさせるようなイメージでしょうか? _________________ ------------------------------------------ 拝啓、さかもとと申します♪ |
|
投稿日時: 2008-08-01 17:26
> そもそも1対多の2つのテーブルのデータをGridViewに表示・編集することはできないのでしょうか?
標準では2つのテーブルのデータを直接表示・編集することはできません。 いろいろプログラムを書いて手をいれればできないことはないようです。 この手のサンプルは結構あると思います。 #私がみたのは英語のものばかりでしたが。 |
|
投稿日時: 2008-08-01 17:27
>>さかもとさま
いえ、DataRelationを使っている例を見ると確かに親テーブルのグリッドからネストして子テーブルを参照するような使い方をしていますが、単純にIDを持っているテーブルにマスターとなるテーブルの内容をくっつけて、つまりView的なものを実現したいのですが、DataViewはDataTableを1つしか持てない事と、ジョインしたテーブルを渡すとそれぞれのテーブル名でDataTableが取得できないという矛盾を解決したいのですが。概念自体が理解できていないのかも知れませんので、その辺りもご教授願えると助かります。 [ メッセージ編集済み 編集者: ほえほえ 編集日時 2008-08-01 17:28 ] |
|
投稿日時: 2008-08-01 17:58
>>どっとねっとふぁんさま
はい、標準では無理ということでDataSetを使用しています。 IDを持ったテーブルはWHERE句で絞って一意のデータにしており、リレーションを組んで、主キーがわかっていればDataAdapterでUpdateできると思うのですが、 力技でRowIndexから主キーの値を割り出しExecuteReaderなりの呼び出しをするしかないのでしょうか? |
|
投稿日時: 2008-08-01 18:14
> 単純にIDを持っているテーブルにマスターとなるテーブルの内容をくっつけて、つまりView的なものを実現したいのですが
ああ、これだとやりかたが違ってるような。。。 http://dotnetfan.org/blogs/dotnetfanblog/articles/734.aspx これはDetailsViewでの例ですが、もしこういうことがやりたいなら同じようにGridViewでもできると思います。 |
|
投稿日時: 2008-08-01 18:20
>>どっとねっとふぁんさま
サンプルの紹介、ありがとうございます。 ですが、実現したいものは項目名がマスターで値を任意の文字列で更新したいという立場的に正反対なものです。 テーブルの構成に問題があるのでしょうか? |
|
投稿日時: 2008-08-01 18:26
ちょっと書き込まれた説明だけではどのようなデータ構造を作成しているのか見当がつきません。
もうちょっと具体的な例をだしてみてもらえませんか? |