none
複合コントロールにDrag&Dropしたコントロールを中間に表示するには? RRS feed

  • 質問

  • こんにちは、さとくんパパ♪こと古谷です。お世話になっています。
    ASP.NET 2.0で作成するカスタムWebサーバーコントロールについて質問させていただきます。

    ①Labelと②TextBoxと③Buttonから成る複合カスタムコントロール(CompositeControlから派生)があります。
    CompositeControlはWebControlを継承するので、他のコントロールのコンテナになれます。このとき、デザイナ上でツールボックスよりDrag&Dropしたり、ソースに直接書き込むなどして、この複合コントロール上に配置した他のコントロール(何でもOK。PanelでもGridViewでも。)を、この複合コントロールのてっぺんではなく、中間(=例えば①と②の間)にレンダリングする事は可能でしょうか?

    もし可能であれば、どのような実装を行えばよいかご教授ください。

    どうかよろしくお願いいたします。

    2009年7月25日 0:01

回答

  • > デザイナ上でツールボックスよりDrag&Dropしたり、ソースに直接書き込むなどして、この複合コントロール
    > 上に配置した他のコントロール(何でもOK。PanelでもGridViewでも。)を、この複合コントロールのてっぺん
    > ではなく、中間(=例えば①と②の間)にレンダリングする事は可能でしょうか?

    「ソースに直接書き込む」というのは、複合コントロールのソースを書き換えるのではなく、複合コントロールを
    配置した aspx のソースに書き込むという意味ですよね? そうであれば、不可能だと思います(もちろん、デザ
    イン画面でドラッグ&ドロップするのも不可)。

    「この複合コントロールのてっぺんではなく」と書かれていますが、それは複合コントロールの中ではなく、外に
    追加できたのですよね?

    複合コントロールのソースを書き換えるか、それを継承した新しい複合コントロールを作って、必要なプロパティ
    を追加し、CreateChildControls メソッドを override して再定義するほか方法はないと思います。

    2009年7月25日 3:55

すべての返信

  • > デザイナ上でツールボックスよりDrag&Dropしたり、ソースに直接書き込むなどして、この複合コントロール
    > 上に配置した他のコントロール(何でもOK。PanelでもGridViewでも。)を、この複合コントロールのてっぺん
    > ではなく、中間(=例えば①と②の間)にレンダリングする事は可能でしょうか?

    「ソースに直接書き込む」というのは、複合コントロールのソースを書き換えるのではなく、複合コントロールを
    配置した aspx のソースに書き込むという意味ですよね? そうであれば、不可能だと思います(もちろん、デザ
    イン画面でドラッグ&ドロップするのも不可)。

    「この複合コントロールのてっぺんではなく」と書かれていますが、それは複合コントロールの中ではなく、外に
    追加できたのですよね?

    複合コントロールのソースを書き換えるか、それを継承した新しい複合コントロールを作って、必要なプロパティ
    を追加し、CreateChildControls メソッドを override して再定義するほか方法はないと思います。

    2009年7月25日 3:55
  • SurferOnWwwさん、レスありがとうございました。
     
    >複合コントロールを配置した aspx のソースに書き込むという意味ですよね? 
    >そうであれば、不可能だと思います(もちろん、デザイン画面でドラッグ&ドロップするのも不可)。
     
    なる程、CompositeControlそのものはContainerにはならないということですよね?
    最初の質問をする前に複合コントロールにテキストボックスをD&D出来たように錯覚していたのですが、よくよく見てみたら、ご指摘の通り複合コントロールの外側に配置されていました。
     
    ご指摘大変ありがとうございました。
    それにしても、どこか一部分をコンテナとして設定可能な複合コントロールがあるといいですね。
     
    代替方法としては、最初の質問の例で言うと、①を非表示にするオプションをプロパティとして設定して、このコントロールを配置するページ側の設定でてっぺんに①に相当するLabelを、その下に元々ラベルの下に配置したかったコントロールを、でその下に複合コントロールを配置するという方法で対応するしかなさそうです。
    2009年7月27日 15:28
  • こんにちは。フォーラムオペレーターの高橋春樹です。

    SurferOnWwwさん、いつもお世話になっております。

    さとくんぱぱ♪さん、初めまして。
    MSDNフォーラムのご利用ありがとうございます。

    実装の方針が決まったようで、良かったです(^-^)
    SurferOnWwwさんからの投稿が、良いアドバイスになったと思いましたので、
    勝手ながら、SurferOnWwwさんから頂いたアドバイスに、回答マークを付けさせて頂きました。

    今後ともMSDNフォーラムをよろしくお願いします。

     


    マイクロソフト株式会社 フォーラム オペレータ 高橋春樹
    2009年8月3日 2:04