- PR -

【ASP.NET2.0】DataSourceコントロールとRepeaterControl

1
投稿者投稿内容
すけじい
会議室デビュー日: 2003/08/26
投稿数: 19
投稿日時: 2006-07-20 22:47
ASP.NET2.0で、SqlDataSourceコントロールを使い、RepeaterControlに値をバインドしています。
RepeaterControlなどを使っているのは、Webデザイナが作ったHTMLテーブルをテンプレートに使わざるを得ないからで、DataGridViewコントロールが使用できません(T^T)

表示は問題なくできていますが、DataSourceコントロールののデータ更新でつまづいています。
<ItemTemplate>
<ASP:TextBox id=TxHoge runat=Server text='<% Bind("hoge") %>' />
</ItemTemolate>

などとして、DataSourceControlのDataSourceViewを更新できるのかと思いきや、更新したいRepeater行のRepeaterItemのDataItemに値が入ってきません。

RepeaterにDataSourceControlはバインドできないのでしょうか??
それとも、DataItemに値を入れるヒミツの方法が??
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-20 23:18
Repeaterは1.1からあるクラスですから、データバインディングの仕組み自体を
持っていないと思います。
更新までは無理でしょうね。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-07-21 03:44
引用:
RepeaterControlなどを使っているのは、Webデザイナが作ったHTMLテーブルをテンプレートに使わざるを得ないからで、DataGridViewコントロールが使用できません(T^T)

ASP.NETの悩みどころですよね。。

しかし、RepeaterControlにできてGridViewにできない局面が想像できません。
TemplateFieldにぺたぺたはっていけば、たいがいのことはできませんか?
すけじい
会議室デビュー日: 2003/08/26
投稿数: 19
投稿日時: 2006-07-21 11:02
> どっとねっとふぁん さん
いつもありがとうございます。

引用:
Repeaterは1.1からあるクラスですから、データバインディングの仕組み自体を
持っていないと思います。 更新までは無理でしょうね。


いろいろ調べましたが、どうもそんな感じです。
ふつう、RepeaterにDataTableなどをバインドすると。RepeaterItemのDataItemにはDataRowViewが入っているのですが、DataSourceContolをバインドした場合はキレイにnullになっています。
ただ、表示だけはぜんぜん問題なくできるのです。
DataSourceControlに関しては、これまでの常識がくつがえされ、悲しいです。
_________________
すけじい
会議室デビュー日: 2003/08/26
投稿数: 19
投稿日時: 2006-07-21 11:53
> べる さん
ご返答、ありがとうございます。

引用:
RepeaterControlにできてGridViewにできない局面が想像できません。
TemplateFieldにぺたぺたはっていけば、たいがいのことはできませんか?



TemplateField使って表示するところまではうまくいったのですが、テーブル全体にボーダー・コラップスのCSSが使われていたり、CSSがらみの画像ボタンが連結フィールドにあったりして、メゲてしまいました。

考えてみれば、そうですよね〜。最悪、フィールド1個を全部TemplateFieldにしてしまえば、Repeaterと同じなのですが。。
ただ、カスタムボタン動作とGridViewの行要素操作を調べないといけません。

こちらの方法でもう少しやってみます。
良いサジェスチョン、感謝いたします。

ASP.NET2.0では、Repeaterなんかもう使わないほうが良いんでしょうか?
_________________
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-07-21 18:26
引用:
RepeaterControlにできてGridViewにできない局面が想像できません。
TemplateFieldにぺたぺたはっていけば、たいがいのことはできませんか?

私こんなこと言ったけど、よく考えたらGridViewだと必ずTableができてしまいますね。

引用:
TemplateField使って表示するところまではうまくいったのですが、テーブル全体にボーダー・コラップスのCSSが使われていたり、CSSがらみの画像ボタンが連結フィールドにあったりして、メゲてしまいました。

私はcss(class)は個々のコントロールに設定してますけど、

GridView1.Style["border-collapse"] = "separate";
こうやってみたら

style="border-collapse:collapse;border-collapse:separate;"
こうなった。。。(separateにはなるけど。。)

Repeaterの中にFormViewをおいてみるとか。
(やったわけじゃないです。いろいろ難しいかもしれません)
1

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