- - PR -
WEBサーバコントロール作成時に子コントロールを複数作成するには
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-10-29 14:43
ASP.NET(VB.NET)にてWEBカスタムコントロールを作成しています。
作成しているのは、 ・DropDownListコントロールを継承するコントロール ・新しくコレクションタイプのプロパティを追加し、子コントロールとする といったものです。 まず、新しくプロパティを追加して、それを子コントロールとするところまではできました。
しかし、こうするとDropDownListクラスのItemsプロパティである<asp:ListItem>も PocketColorCollectionと認識されてしまい、解析エラーとなります。 ParseChildrenではひとつのプロパティしか子コントロールとして指定できませんし、 これを回避するのはどうすればよいでしょうか? どなたかよい知恵をお貸しください。m(__)m | ||||
|
投稿日時: 2003-10-29 17:51
次のように変更してみてはどうでしょうか。
1. ParseChildren(True, "BorderValues") -> ParseChildren(True) 2. PersistenceMode(PersistenceMode.InnerDefaultProperty) ->PersistenceMode(PersistenceMode.InnerProperty) 3. DropDownList の Items プロパティをオーバーライドして PersistenceMode(PersistenceMode.InnerProperty) を付ける。 | ||||
|
投稿日時: 2003-10-30 09:11
soramimiさん、ありがとうございます。
さっそく試してみましたができました!! しかしもうひとつ気になることが…。
これで生成されたHTMLを見ると上記のようになっていますが、<BorderValues> と<Items> <asp:ListItem>に赤線がついて「アクティブになっているスキーマは 要素' BorderValues'をサポートしません。」と表示されています。 これは何なのでしょうか? 実行には問題ないのですが、解決できるなら解決したいです。 | ||||
|
投稿日時: 2003-10-30 13:16
実は私も気になっていましたが解決できていません。
ただサードパーティ製の良く出来ているカスタムサーバーコントロール を使ってみてもやっぱり赤線で指摘されているので、私の中ではもともと あるサーバーコントロール以外はそういうものだ、と思ってます。 | ||||
|
投稿日時: 2003-10-30 13:40
特に動作には支障がないのなら放っておいてもよさそうですね。
これで完成! と思って画面にいろいろと配置していくと…。 なぜかDataGridのテンプレートカラムにこのコントロールを配置すると、デザイン時に 「コントロールを描画中にエラーが発生しました。」と表示されてしまい、 DataGridが表示されなくなってしまいました…。 実行するとちゃんと表示されるのですが、原因は何が考えられますでしょうか? | ||||
|
投稿日時: 2003-10-30 14:11
Render メソッドで例外が発生していませんか?
例外をキャッチしてメッセージを出力するようにコードを 変更してみてください。 例外が発生していても単独で配置した場合はエラーではなく [MyServerControl "MyServerControl1"] などと表示されるようです。 | ||||
|
投稿日時: 2003-10-30 15:15
try〜catchして出力してみたら原因がわかりました。
どうやらキャストに失敗していたようえす。(^^; DataGrid内だけ…というのは、DBの値を連結させていたため、 連結されていないデザイン時にエラーになるという理由でした。 どうもありがとうございました。m(__)m |
1