.net CalendarExtender引入实现datepicker
在webForm中引入CalendarExtender,如下。
<asp:TextBox ID="DatePicker" runat="server" Width="160px"></asp:TextBox>
<asp:CalendarExtender ID="DatePicker_CalendarExtender" runat="server"
Enabled="True" TargetControlID="DatePicker">
</asp:CalendarExtender>
但引入后报错,源码中如下:
前端中报错如下:
在前端源码引入下述代码,保存页面后,报错得以解决。
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
产生原因:CalendarExtender依赖于Ajax注册,但未引入注册Ajax控件注册组件,导致程序报错。
常用设置:
给CalendarExtender设置默认值为当天: CalendarExtender_Start.SelectedDate = Today,这样打开时DatePicker默认为当天日期。
若要datepicker设置为只读,这样不能手动键入值,只能选择;同时要能在后端还能获取txtDate.text; 若后端设置txtDate.ReadOnly=True或ReadOnly="true" ',但在后端不能获取txtDate.text。其设置在前端设置datepicker的textbox,如下:
'onfocus=this.blur() 刚获取焦点,就强制分开,这样就不用设置readonly
<asp:TextBox ID="txtDate" runat="server" Width="160px" placeholder="日期" onfocus = this.blur()></asp:TextBox> '
<asp:CalendarExtender ID="CalendarExtender_Start" runat="server"
Enabled="True" TargetControlID="txtDate">
</asp:CalendarExtender>
或者在后端代码中设置: txtDate.Attributes.Add("readonly", "true")
这样datepicker就只能选择,不能输入了。
弄好后如下:
记之以备忘。