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

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

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

Re[9]: ユーザーコントロールからObjectDataS


(過去ログ 35 を表示中)

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

■17520 / inTopicNo.1)  ユーザーコントロールからObjectDataSourceへ
  
□投稿者/ PPP (1回)-(2008/04/26(Sat) 18:53:19)

分類:[ASP.NET (C#)] 

こんにちわ。ASP.NET2.0での質問になります。未熟な為、説明不足や手法が一般的で無い場合は
ご指導お願いします。よろしくお願いします。

[検索条件エリア]と[結果表示エリア]があるWebフォームで、[検索条件エリア]をユーザーコントロールとして作成し、
[結果表示エリア]で利用するObjectDataSourceの条件(SelectParameters)として、ユーザーコントロール内のTextBoxを
指定した場合、どのように設定すればよろしいのでしょうか?
ObjectDataSourceのデータソースの構成のパラメータ定義では、Webフォーム内のコントロールのみ指定可能で
ユーザーコントロール内のコントロールが指定できないので困っております。

[検索条件エリア]を流用したいので、このような処理をしていますが、もしかしてこの使用法は一般的では無いのでしょうか?

引用返信 編集キー/
■17528 / inTopicNo.2)  Re[1]: ユーザーコントロールからObjectDataSourceへ
□投稿者/ ネタ好き (162回)-(2008/04/26(Sat) 20:06:50)
No17520 (PPP さん) に返信
>ユーザーコントロール内のコントロールが指定できないので困っております。
まだあまり詳細に読んでいないのでピントがずれているかもしれませんが、
プロパティなどで設定するべき情報を外部に出していないのが問題だと思います。
引用返信 編集キー/
■17533 / inTopicNo.3)  Re[2]: ユーザーコントロールからObjectDataSourceへ
□投稿者/ PPP (2回)-(2008/04/26(Sat) 21:40:51)
No17528 (ネタ好き さん) に返信
> ■No17520 (PPP さん) に返信
> >ユーザーコントロール内のコントロールが指定できないので困っております。
> まだあまり詳細に読んでいないのでピントがずれているかもしれませんが、
> プロパティなどで設定するべき情報を外部に出していないのが問題だと思います。

おっしゃる通り「公開していないと設定できない」と、ユーザーコントロール側で
コントロール(TextBox:Joken)をプロパティで公開してみました。

が、上手く行きませんでした。調べてみたのですが、ユーザコントロールは実行時にコンパイルされるので
デザイン時にはユーザーコントロール内にどのコントロールがあるか認識できない ってことみたいです。

なら、Page_Load時にFindControl利用してSelectParametersに割り当て?と思い試してみましたが
ControlIDに割り当てすべき文字列が上手く得られませんでした。

最終的には、ユーザーコントロールのID(WebUserControl1$Joken)を調べてソースに書き込み動作的にはOKなのですが、
もっとスマートな方法があればご教示いただけますでしょうか。

<今のところ↓みたく書いています>
<SelectParameters>
  <asp:ControlParameter ControlID="WebUserControl1$Joken" Name="hoge" PropertyName="Text" Type="String" />
</SelectParameters>

引用返信 編集キー/
■17536 / inTopicNo.4)  Re[3]: ユーザーコントロールからObjectDataSourceへ
□投稿者/ ネタ好き (165回)-(2008/04/26(Sat) 22:10:09)
>■No17520 (PPP さん) に返信

そもそも無闇にオブジェクト参照を晒すのは危ない行為です。
こんなふうにするとよいと思います。

pubiic class FooControl : UserControl {
private TextBox Joken;

public string JokenText {
get { return Joken.Text }
set {
//妥当性をチェックする
Joken.Text = value;
}
}
}
引用返信 編集キー/
■17538 / inTopicNo.5)  Re[4]: ユーザーコントロールからObjectDataSourceへ
□投稿者/ PPP (3回)-(2008/04/26(Sat) 22:20:27)
No17536 (ネタ好き さん) に返信
> >■No17520 (PPP さん) に返信
>
> そもそも無闇にオブジェクト参照を晒すのは危ない行為です。
> こんなふうにするとよいと思います。
>
> pubiic class FooControl : UserControl {
> private TextBox Joken;
>
> public string JokenText {
> get { return Joken.Text }
> set {
> //妥当性をチェックする
> Joken.Text = value;
> }
> }
> }

はい。一応それは認識しておりましたが、ControlParameterがControlIDとPropertyNameの設定が必要な為、コントロール自体を
公開する必要があるのかと思い設定しました。
しかし現状はプロパティの公開はせず、WebUserControl1$Jokenをそのまま書き込んでいます。

<asp:ControlParameter ControlID="WebUserControl1$Joken" Name="hoge" PropertyName="Text" Type="String" />

引用返信 編集キー/
■17539 / inTopicNo.6)  Re[5]: ユーザーコントロールからObjectDataSourceへ
□投稿者/ ネタ好き (167回)-(2008/04/26(Sat) 22:30:04)
No17538 (PPP さん) に返信
宇宙仮面さんのサイトの記事http://uchukamen.com/ASPNET20/ObjectDataSource/Default.htm
が参考になると思います。ひとまずこれを試してみてください。
引用返信 編集キー/
■17540 / inTopicNo.7)  Re[6]: ユーザーコントロールからObjectDataSourceへ
□投稿者/ PPP (4回)-(2008/04/26(Sat) 22:39:47)
No17539 (ネタ好き さん) に返信
> ■No17538 (PPP さん) に返信
> 宇宙仮面さんのサイトの記事http://uchukamen.com/ASPNET20/ObjectDataSource/Default.htm
> が参考になると思います。ひとまずこれを試してみてください。

すみませんが、もう少し詳しく具体的にどの部分が参考になるのか教えて戴けると嬉しいのですが、
宇宙仮面さんのサイトでは、条件は同一フォーム内のDropDownListから得ているので、自分の望む
「ユーザーコントロール内のコントロールから条件を得る」のと少し違うように思えます。
引用返信 編集キー/
■17541 / inTopicNo.8)  Re[7]: ユーザーコントロールからObjectDataSourceへ
□投稿者/ ネタ好き (168回)-(2008/04/26(Sat) 23:07:12)
No17540 (PPP さん) に返信
> ■No17539 (ネタ好き さん) に返信
>>■No17538 (PPP さん) に返信
>>宇宙仮面さんのサイトの記事http://uchukamen.com/ASPNET20/ObjectDataSource/Default.htm
>>が参考になると思います。ひとまずこれを試してみてください。
>
> すみませんが、もう少し詳しく具体的にどの部分が参考になるのか教えて戴けると嬉しいのですが、
> 宇宙仮面さんのサイトでは、条件は同一フォーム内のDropDownListから得ているので、自分の望む
> 「ユーザーコントロール内のコントロールから条件を得る」のと少し違うように思えます。

着目点はどうやってデータをやり取りしているかです。
それさえ分かれば色々応用も出来ます。
引用返信 編集キー/
■17545 / inTopicNo.9)  Re[8]: ユーザーコントロールからObjectDataSourceへ
□投稿者/ PPP (5回)-(2008/04/26(Sat) 23:35:03)
No17541 (ネタ好き さん) に返信
> 着目点はどうやってデータをやり取りしているかです。
> それさえ分かれば色々応用も出来ます。

やっぱり知識不足のせいか、ネタ好きさんの意図していることが分かりません…。
ObjectDataSourceを利用した場合に「どうやってデータをやり取りしているか」については、
・ビジネスロジック側でDataSetまたはDataTableを返すpublicメソッドを定義
・データの受け渡しは引数で指定し、その引数へはSelectParametersで指定し渡す
と認識しています。
この点について、過不足あればご指摘お願できますでしょうか。
また、ここから何を応用すれば答えに辿り着くのかサッパリ分かっておりません…。
引用返信 編集キー/
■17547 / inTopicNo.10)  Re[9]: ユーザーコントロールからObjectDataS
□投稿者/ ネタ好き (170回)-(2008/04/27(Sun) 00:02:24)
2008/04/27(Sun) 00:23:21 編集(投稿者)

No17545 (PPP さん) に返信
私の意図は自分で解決できる力を身につけてもらうと言う事です。
限られた状況内の限られた解決手段を教えてもらっても実力はUPしません。
そして同じような問題にぶち当たります。
それで、親切心のつもりで考えるヒントを出しています。
前の資料で足りない場合、http://www.atmarkit.co.jp/fdotnet/bookpreview/vs2005webapp_10/vs2005webapp_10_01.html
が大変参考になります。
前に提示した資料と今度の資料を実際に動作させて、ソースコードを読んでみてください。
そうすれば、今回の問題はおのずと解けます。
ヒント:デバッガを駆使しよう
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -