子コントロールの初期化カスタム合成にASP.NET
-
02-07-2019 - |
質問
一部のシリーズの制御のために、あるいlumpingもとに複合材私は急速に開始することを知らかにすることを示したものですこれらはすべて新しく!) :)
については基本的にしてい StyledWindow
制御は、基本的には栄光の Panel
可能なその他のビットのような追加えます。
こちらのコードinstantiatesの子を制御することにあります。今までのこの点のようでいて、もしくは正しくふれた静的コントロール:
protected override void CreateChildControls()
{
_panel = new Panel();
if (_editable != null)
_editable.InstantiateIn(_panel);
_regions = new List<IAttributeAccessor>();
_regions.Add(_panel);
}
の問題に来た今日、もしくは営巣のより複雑な制御を囲んで同じ時間を共有する。このコントロール用のページを参考にで混JavaScriptでビットをより身だと応答性の RegisterClientScriptBlock
はるたった一つの理由はさんありがとうございます。ページない。
これが"オブジェクトがnull"の誤り、この局在の描画方法は、もちろんうメソッドを呼び出しに対する[nullの場合] Page
オブジェクトです。
いくというのは、制御動作としてスタンドアロン、その StyledWindow
るのでしょうか決違います。
それでね、私は見落とさないようちっ StyledWindow
または ChildControl
.そのアイデア?
更新
として ブラッド-ウィルソン も指摘はありませんの制御に加えたもの Controls
収集します。この _panel
は、このあり扱いる私にとって、基本的にはその後オーバーライド Controls
(私はこれから案内のどこか):
Panel _panel; // Sub-Control to store the "Content".
public override ControlCollection Controls
{
get
{
EnsureChildControls();
return _panel.Controls;
}
}
いることを明らかに。謝罪.
以下の Longhorn213の回答
右のような一部の制御を一つの複合体ですよ。それからの状況のページでのイベントの主なイベントのライフサイクルおよび描画されるのです。
スタンドアローンでは美のページをinitedとして期待される。しかし、入れ子の合成が異なります。この OnLoad
イベントはどれです。私の推測はBradが正しいのだろうと思いない設定の管理階層が正しくできるものを提供アドバイスをどのような私の足?のパネル方法でも足りない?(ものではありませんからはしていきたいと思います。) D
おかげとなるようご理解とご協力をあり。)
解決 3
解消!
右、取得するために決定されたこのひび割れ。ここが私の思い:
- と思ったの
Panel
ジャマエルフナ、マラケシュhackではできるだけ除去することが望まっておいた方が良いようで本当に行われます。 - 思いのようなもの
MyCtl.Controls[0].Controls
へのアクセス制御を追加した。 - たいと思ったの欲しいものです。
なので、検索にヒット MSDN, このartcle た 本当に 役に立つのようにほとんどコピー'n'ペースト、説明などもMSDNは伝統的には悪いです。カー。
そこで、ブの利用 Panel
とかなりのartcleたとしても福音で、注意して行った。
ここでの私の現在:
- 私は使っていたに違います。ったものを呼びかけておりますが、これまで 分子を鋳型と制御.らの分子を鋳型とした制御技術的に複合材がある。鋳型を制御するためにはインタフェースが追加されました。
- 分子を鋳型とした規制はとても迫力が実現で簡単に設置ロサンゼルス生まれの頭さんから電話がかかってきてい!
- いまもりのデザイナーの支援を了承のうえで、それを取得し、ブログをup)
- の"テンプレート"の制御を指定するために使用するためのインターフェース分子を鋳型としたデータです。
例えば、こちらをASPXのマークアップのための分子を鋳型とした制御:
<cc1:TemplatedControl ID="MyCtl" runat="server">
<Template>
<!-- Templated Content Goes Here -->
</Template>
</cc1:TemplatedControl>
ニコっ
public class DummyWebControl : WebControl
{
// Acts as the surrogate for the templated controls.
// This is essentially the "interface" for the templated data.
}
にTemplateControl.cs...
ITemplate _template;
// Surrogate to hold the controls instantiated from
// within the template.
DummyWebControl _owner;
protected override void CreateChildControls()
{
// Note we are calling base.Controls here
// (you will see why in a min).
base.Controls.Clear();
_owner = new DummyWebControl();
// Load the Template Content
ITemplate template = _template;
if (template == null)
template = new StyledWindowDefaultTemplate();
template.InstantiateIn(_owner);
base.Controls.Add(_owner);
ChildControlsCreated = true;
}
そして、サービスへのリンクを表示してお管理し、[サロゲート]オブジェクト:
(このはなぜかい明るさに追加します。コントロール
public override ControlCollection Controls
{
get
{
EnsureChildControls();
return _owner.Controls;
}
}
ことになるのですが、ここでは、簡単に分かっている場合は、どのように!:)
次: デザインの時間領域応援!
他のヒント
と思いますかごに追加コントロールを管理回収どこでも、その理由を説明できないアクセスのページ(以降って正式に置かれます。
私は、JavaScriptにOnLoadます。などです。
protected override void OnLoad(EventArgs e)
{
// Do something to get the script
string script = GetScript();
this.Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "SomeJavaScriptName", script);
// Could also use this function to determine if the script has been register. i.e. more than 1 of the controls exists
this.Page.ClientScript.IsClientScriptBlockRegistered("SomeJavaScriptName");
base.OnLoad(e);
}
だいたいの描画したときにだけ記のスクリプトに応じます。そのRegisterScriptBlockはすでにスクリプトをインラインのページです。
右ん遊んで、きっかけになるかもしれないという私の管理インスタンス生成、Longhornた、できるスクリプトの作成を参照で OnLoad
(分からなくなった)、ブラッドした権利を必要とすることに Controls
階層ることによって維持されてきたの Controls
集合成した。
なので、私は二つについてはこちら
- 私のオーバーライド
Controls
件のアクセス用メソッドの複合体を返すこPanel
's"規制の収集からっしたいてctl.Controls[0].Controls[0]
この実際に制御します。 って削除されるこもりさんがこの全部エクスペディアで。 - を行っていませんでした追加の
Panel
のControls
集 私は現在行われます。
で動作し どのようにして求めるのですか Controls
性のための複合には返品の Panel
, ではなく、 Panel
ょうか?