私はTelerik ASP.Net Ajaxコントロールを使用しています(理論的には、誰が第三者コントロールを行うかは関係ありません)。私は独自のカスタムサーバーコントロール(ユーザーコントロールではありません)を作成したいと思います。このコントロールには、独自の定義済みHTML出力がありますが、Telerik DatePickerも含まれています。 Telerik DatePickerは別のサーバーコントロールであるためサーバーコントロールをカスタムサーバーコントロールに配置する正しい手順は何ですか?サードパーティのサーバーコントロールをASP.Netのカスタムサーバーコントロール内に配置する方法
私の理解では、サーバコントロールはhtml出力を記述することで動作することを理解しています。レンダリングメソッドでインスタンス化し、元のコントロールの個々のライフサイクルを保持している別のコントロールの出力を書き込むにはどうすればよいですか。
望ましい結果:多くのサードパーティ製のコントロールが含まれてい
- 私自身のカスタムサーバーコントロール(すなわちRadDatePicker。)。複合コントロールの方向に私を指しているため@Sumoへ
ソリューション
感謝。資料はhereです。
CompositeDataBoundControl
を継承するコントロールを作成することで問題を解決できました。次に、データソースをデータバインディングし、必要なカスタムコントロールの数を計算し、ArrayListに配置し、正しくインスタンス化します(CreateChildControls()
には独自のライフサイクルがあります)。私はRender()
メソッドでArrayListの各コントロールをDatePicker
の方法でレンダリングできましたが、まだレンダリングされていないArrayListインデックスを呼び出すことができました。 例((RadDatePicker)datePickerArray(instantiatedDatePickersCount)).RenderControl(writer)
。
これは現時点では汚い解決策ですが、テスト目的では機能します。
私は 'writer'スタイルの出力を使用しないでしょうか? – Jeremy
私は現時点でコンポジットコントロールを研究しています - 存在していなかったのです。 – Jeremy
もう一度ありがとうございます。私は 'CompositeDataBoundControl'を使用して目的の結果を達成することができました。 'HtmlTextWriter'コードともちろん' controlName.RenderControl() 'に基づいて、' CreateChildControls() 'とそれから' Render() 'の第三者コントロールをインスタンス化できます。どうもありがとう! – Jeremy