私は、テキストボックスから継承したサーバーコントロールを作成しようとしていますが、そのサーバーコントロールには自動的にCalendarExtenderが添付されています。これを行うことは可能ですか、または新しいコントロールが代わりにCompositeControlから継承する必要がありますか?私は前者を試しましたが、コントロールライフサイクルのどの部分でCalendarExtenderの新しいインスタンスを作成すべきか、そしてそれを追加するコレクションを制御するものは何であるかはわかりません。私はそれをページやフォームのコントロールコレクションに追加することはできないようですが、それを(TextBox)コントロールのコレクションに追加すると、ポップアップカレンダーの機能はありません。CalendarBoxサブクラスサーバーコントロールにCalendarExtenderを動的に追加しますか?
答えて
これをプロジェクトの中でしばらくやり遂げました。これを行うには、TextBoxとCalendarExtenderの両方を含むCompositeControlを作成しました。私はこのようなコードを使用しCompositeControlのCreateChildControls
方法で
:もちろん
TextBox textbox = new TextBox();
textbox.ID = this.ID + "Textbox";
textbox.Text = this.EditableField.TextValue;
textbox.TextChanged += new EventHandler(HandleTextboxTextChanged);
textbox.Width = new Unit(100, UnitType.Pixel);
CalendarExtender calExender = new CalendarExtender();
calExender.PopupButtonID = "Image1";
calExender.TargetControlID = textbox.ID;
this.Controls.Add(textbox);
this.Controls.Add(calExender);
このCompositeControlを含むフォームは、ツールキットのスクリプトマネージャを持っていることを確認してください。
私はこれが古いスレッドだと知っていますが、私にも同様の質問がありました。これは私が実装を終えたものであり、素晴らしいことです。コントロールをTextBoxにしたい場合は、Renderの呼び出し中にエクステンダーをポンプアウトするだけです。
Imports System.Web.UI.WebControls
Imports AjaxControlToolkit
Public Class DateTextBox
Inherits TextBox
Private _dateValidator As CompareValidator
Private _calendarExtender As CalendarExtender
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
MyBase.OnInit(e)
_dateValidator = New CompareValidator
With _dateValidator
.ControlToValidate = ID
Rem set your other properties
End With
Controls.Add(_dateValidator)
_calendarExtender = New CalendarExtender
With _calendarExtender
.TargetControlID = ID
End With
Controls.Add(_calendarExtender)
End Sub
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
MyBase.Render(writer)
_dateValidator.RenderControl(writer)
_calendarExtender.RenderControl(writer)
End Sub
End Class
カスタムサーバーコントロールに簡単にajaxカレンダーを追加できます。アプリケーションに2つの参照を追加する必要があります。 1. AjaxControlToolkit.dll 2. System.Web.Extensions 2番目の参照の助けを借りて、カスタムサーバーコントロールの "CalendarExtender"のすべてのプロパティを取得します。
ユーザーがテキストボックスに何も入力せず、カレンダーエクステンダーでのみ入力できるようにしようとしているときに、テキストボックスコントロールから選択した日付を取得しようとすると、 textboxプロパティをReadOnly = "True"に設定します。
これは、読み取り専用のコントロールがサーバーにポストバックされないためです。これを回避するには、次の
保護されたボイドをPage_Load(オブジェクト送信者、のEventArgs電子)
{
TextBox1.Attributes.Add( "読み取り専用"、 "読み取り専用")。
}
希望します。
- 1. alt値を動的に追加/追加しますか?
- 2. CalendarExtenderクリックすると年を追加します
- 3. DockablePanesを動的に追加します
- 4. リンクボタンを動的に追加します
- 5. データビューに行を自動的に追加しますか?
- 6. 自動的に配列に変数を追加しますか?
- 7. passportjsは自動的にユーザーをres.localsに追加しますか?
- 8. ファイルからコンボボックスにアイテムを動的に追加します
- 9. GridView/DataGrid/Repeaterに動的に行を追加しますか?
- 10. 自動的にマニフェストにアクティビティを追加しますか?
- 11. maven build reactorにプロジェクトを動的に追加しますか?
- 12. GWTにテキストボックスを動的に追加しますか?
- 13. Templated User Controlにコントロールを動的に追加しますか?
- 14. WPF - 動的に追加されたTabitemに動的コントロールを追加しますか?
- 15. 動的にスクロールビューにボタンを追加して追加する
- 16. php const配列に動的に追加しますか?
- 17. 動的に行を追加し、値をコントローラーに渡します。
- 18. Last-ModifiedヘッダーIISを自動的に追加しますか?
- 19. Android ListViewカスタムアダプタボタンを動的に追加しますか?
- 20. ogタグを動的に追加してレンダリングできますか?
- 21. 動的変数をPython dictに追加しますか?
- 22. Androidリストビュー項目を動的に追加しますか?
- 23. Androidキャンバスを動的に追加しますか?
- 24. 配列名に動的変数を追加しますか?
- 25. 動的にサブドメインを追加しますか?
- 26. XMLでコンボボックスに動的な値を追加しますか?
- 27. キャンバス属性を動的に追加しますか?
- 28. symfony3の動的に追加されたフィールドにイベントリスナーを追加します
- 29. 動的に追加されたテーブル行にチェックボックスを追加します。
- 30. 動的に追加されたコントロールにイベントを追加します。
適切な子コントロールにプロパティを実装して転送する必要があると想定するのは安全ですか。たとえば、TextBoxからTextプロパティを取得する場合は、CompositeControlでそれを実装し、子TextBoxにコールを転送しますか? – LockeCJ
基本的にはyesです。しかし、内部TextBoxを、自分のCompositeControlのインスタンスメンバー(CreateChildControlsの前にインスタンス化する必要があるかもしれません)にして、自分のコードがそれをどのように扱うのかとは違うものにしたいと思うでしょう。 –