- PR -

[ASP.NET]ユーザーコントロールにユーザーコントロールを追加する

1
投稿者投稿内容
新人S
ベテラン
会議室デビュー日: 2005/10/12
投稿数: 74
投稿日時: 2005-11-04 21:02
いつもお世話になっておりますm(_ _)m

今日は煮詰まってしまいました。
どなたかご教授お願いしますm(_ _)m
(言語:VB)

今、自分で作成したユーザーコントロール(Panelだけ持っている)があります。
そのユーザーコントロールが持っているPanelのControlsにユーザーコントロールを
追加しようとしています。

Panel.Controls.Add(追加するユーザーコントロール)

で追加しています。
追加すると、当然
Panel.Controls.item(0)
は、さきほど追加したコントロールになるはずなのになぜか、
System.web.UI.literalControl
オブジェクトが入っています。
デバッグしてみると、ユーザーコントロールのInitメソッドが呼ばれた時点ですでに入っていました。
おかしなことに、HTMLのFONTタグを消してみたり既存のPanel以外のコントロールを追加していると、たまにLiteralControlがitem(0)に入らなかったります。

常に入っているなら、まだ分かるのですが入ったり入らなかったり…。
混乱しています。

どなたか、このような動きをご存知でしたらどんな情報でもかまいませんので教えていただけないでしょうか。
宜しくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-04 21:15
引用:

新人Sさんの書き込み (2005-11-04 21:02) より:

おかしなことに、HTMLのFONTタグを消してみたり既存のPanel以外のコントロールを追加していると、たまにLiteralControlがitem(0)に入らなかったります。


とりあえず、ID など色んなプロパティを参照してみてください。
それと、index 値で見るのは危険だと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-11-04 21:36
引用:

Panel.Controls.Add(追加するユーザーコントロール)

で追加しています。


もしかして、ユーザーコントロールのコードビハンドのクラスを渡していませんか?

ascxをロードして渡す必要があります。

Panel.Controls.Add(Page.LoadControl("hoge.ascx"))

新人S
ベテラン
会議室デビュー日: 2005/10/12
投稿数: 74
投稿日時: 2005-11-04 21:44
いつもありがとうございますm(_ _)m

INDEXはNOTHINGでした。
他の値も何やら入っているのですが…。
NOTHINGだったり、いろろです(T_T)

やりたいこととしては、Panelには1つのコントロールしか追加できないようにする。
追加する際に、
Panel.Controls.Count
を見て、0より大きいときはエラーとして処理します。
CountはINDEXをみていないので、判断材料としては正しいような気がするのですが
Countも危険だったりするのでしょうか?
新人S
ベテラン
会議室デビュー日: 2005/10/12
投稿数: 74
投稿日時: 2005-11-05 00:15
返信ありがとうございますm(_ _)m

ひとまず、最初にliteralControlが追加されてしまっているという問題は解決しました。どうやら、HTMLに原因があったようで、余計なFONTタグを消したり、asp終了タグの前にある改行を消すとうまくいきましたm(_ _)m
皆様、アドバイスありがとうございました。

>もしかして、ユーザーコントロールのコードビハンドのクラスを渡していませんか?

>ascxをロードして渡す必要があります。

>Panel.Controls.Add(Page.LoadControl("hoge.ascx"))

今は、普通に、ユーザーコントロールの内部で

Panel.Controls.Add(Control)

と、しています。
一応表示もうまくいっているので、大丈夫なのかなと思っていましたが
何か問題が起きそうな可能性がありましたら教えていただけないでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-05 09:20
引用:

新人Sさんの書き込み (2005-11-04 21:44) より:

CountはINDEXをみていないので、判断材料としては正しいような気がするのですが
Countも危険だったりするのでしょうか?


Count を見る分には問題ありません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-11-06 14:55
脱線、国語の問題です。

 煮詰まる、って、煮物をしていて、水分がなくなってしまった状態なんですよね。つまり、冗長部分がなくなっている、結論が出る状態を指します。
_________________
1

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