我試圖創建一個從TextBox繼承的服務器控件,它將自動附加一個CalendarExtender。是否有可能這樣做,或者我的新控件是否需要從CompositeControl繼承?我試過前者,但是我不清楚在控件生命週期的哪個部分,我應該創建CalendarExtender的新實例,以及我應該添加的控件集合。我似乎無法將它添加到Page或Form的控件集合中,並且如果將它添加到(TextBox)控件的集合中,我就不會獲得任何彈出式日曆功能。將CalendarExtender動態添加到Textbox子類服務器控件?
2
A
回答
2
我在一個項目中完成了這項工作。爲此,我創建了一個包含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的形式有一個工具箱腳本經理。
1
我知道這是一個老話題,但是當我遇到類似的問題時,我碰到了它。這就是我最終實現的目標,而且效果很好。如果您希望控件是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
1
您可以在自定義服務器控件中輕鬆添加ajax日曆。您需要在應用程序中添加兩個參考。 1. AjaxControlToolkit.dll 2. System.Web.Extensions 藉助第二個參考,我們將在您的自定義服務器控件中獲取「CalendarExtender」的所有屬性。
0
當您試圖不允許用戶在文本框中鍵入任何內容,但只能由日曆擴展程序填充,然後嘗試從文本框控件獲取選定日期時,如果您已設置textbox屬性爲ReadOnly =「True」。
這是因爲只讀控件不會回發到服務器。解決方法爲這個如下:
保護無效的Page_Load(對象發件人,EventArgs的)
{
TextBox1.Attributes.Add( 「只讀」, 「只讀」);
}
希望它有幫助。
相關問題
- 1. 如何將動態HTML添加到服務器控件?
- 2. 如何將服務器控件動態添加到中繼器中?
- 3. 動態添加服務器到memcached
- 4. 從ASP.NET服務器控件動態添加CSS文件
- 5. 將服務器端事件添加到擴展器控件
- 6. 將控件動態添加到UIView
- 7. 通過javascript動態添加asp.net服務器端控件
- 8. 將事件添加到域服務類?
- 9. 將服務器添加到服務
- 10. 將事件添加到動態添加的控件
- 11. 將web方法添加到自定義服務器控件
- 12. asp.net mvc:從控制器動態添加子/子控制器
- 13. 將Windows服務類添加到類庫
- 14. 將驗證器的輸入控件動態添加到視圖
- 15. ASP.NET WebControl&Page - 動態添加控件(如TextBox)
- 16. 將屬性文件夾添加到weblogic服務器類路徑
- 17. 服務器控件動態創建CustomValidator
- 18. Button Click事件將TextBox添加到Grid
- 19. 如何動態地將TextBox添加到網格?
- 20. 將控件添加到表控制動態
- 21. 報告服務:動態添加過濾器到服務器報告
- 22. 動態添加控件到控制器查看
- 23. WPF動態添加控件到窗口
- 24. 動態添加OCX控件到網頁
- 25. 動態添加控件
- 26. 動態添加ASP.Net控件
- 27. iPhone +添加控件動態
- 28. 動態添加ASP控件
- 29. 將span類添加到動態按鈕
- 30. 將類添加到html元素動態
是否可以安全地假設我需要實現並將任何屬性轉發給適當的子控件。例如,如果我想從TextBox獲取Text屬性,我在CompositeControl中實現它並將調用轉發給子TextBox? – LockeCJ 2008-09-17 15:02:19