- - PR -
[ASP.NET]ユーザーコントロールにユーザーコントロールを追加する
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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)に入らなかったります。 常に入っているなら、まだ分かるのですが入ったり入らなかったり…。 混乱しています。 どなたか、このような動きをご存知でしたらどんな情報でもかまいませんので教えていただけないでしょうか。 宜しくお願いします。 | ||||
|
投稿日時: 2005-11-04 21:15
とりあえず、ID など色んなプロパティを参照してみてください。 それと、index 値で見るのは危険だと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-11-04 21:36
もしかして、ユーザーコントロールのコードビハンドのクラスを渡していませんか? ascxをロードして渡す必要があります。 Panel.Controls.Add(Page.LoadControl("hoge.ascx")) | ||||
|
投稿日時: 2005-11-04 21:44
いつもありがとうございますm(_ _)m
INDEXはNOTHINGでした。 他の値も何やら入っているのですが…。 NOTHINGだったり、いろろです(T_T) やりたいこととしては、Panelには1つのコントロールしか追加できないようにする。 追加する際に、 Panel.Controls.Count を見て、0より大きいときはエラーとして処理します。 CountはINDEXをみていないので、判断材料としては正しいような気がするのですが Countも危険だったりするのでしょうか? | ||||
|
投稿日時: 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) と、しています。 一応表示もうまくいっているので、大丈夫なのかなと思っていましたが 何か問題が起きそうな可能性がありましたら教えていただけないでしょうか? | ||||
|
投稿日時: 2005-11-05 09:20
Count を見る分には問題ありません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-11-06 14:55
脱線、国語の問題です。
煮詰まる、って、煮物をしていて、水分がなくなってしまった状態なんですよね。つまり、冗長部分がなくなっている、結論が出る状態を指します。 _________________ |
1