最近在看一些.NET Ajax的东西,发现一个小问题,就是当我在将TextBox的ReadOnly属性设置为true的时候,使用CalendarExtender后无法获得TextBox.Text的值。
在选择日期的时候,不允许用户修改TextBox里的值,这是比较常见的一种做法,目的是不希望再对用户的输入做进一步的格式验证。请看下面的代码:
view plaincopy to clipboardprint?
<asp:TextBox ID="txtDayOfBirth" ReadOnly="True" runat="server" Width="100px"></asp:TextBox>
<asp:ImageButton ID="datePickerImg" runat="server" ImageUrl="~/images/calendar.png" AlternateText="请点击本按钮以选择日期" CausesValidation="false" />
<Ajax:CalendarExtender ID="dayOfBirthCalendarExtender"
runat="server"
Enabled="True"
TargetControlID="txtDayOfBirth"
CssClass="MyCalendar"
PopupButtonID="datePickerImg"
Format="yyyy年MM月dd日"
Animated="false" />
在运行以后,可以通过TextBox边上的日历按钮来选择日期,但是这样做会导致读不到TextBox里文本的问题。解决办法其实很简单,就是,先不在设计中加入ReadOnly属性,而是在Page_Load中动态加入该属性。代码如下:
◎ ASPX页面
view plaincopy to clipboardprint?
<asp:TextBox ID="txtDayOfBirth" runat="server" Width="100px"></asp:TextBox>
<asp:ImageButton ID="datePickerImg" runat="server" ImageUrl="~/images/calendar.png" AlternateText="请点击本按钮以选择日期" CausesValidation="false" />
<Ajax:CalendarExtender ID="dayOfBirthCalendarExtender"
runat="server"
Enabled="True"
TargetControlID="txtDayOfBirth"
CssClass="MyCalendar"
PopupButtonID="datePickerImg"
Format="yyyy年MM月dd日"
Animated="false" />
◎ C#后台代码
view plaincopy to clipboardprint?
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
txtDayOfBirth.Attributes.Add("readonly", "true");
}
希望本文能帮到遇到类似问题的网友。
共同学习,写下你的评论
评论加载中...
作者其他优质文章