我试图创建一个从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