【Ajax】CalendarExtender与TextBox Readonly的问题

    最近在看一些.NET Ajax的东西,发现一个小问题,就是当我在将TextBox的ReadOnly属性设置为true的时候,使用CalendarExtender后无法获得TextBox.Text的值。

    在选择日期的时候,不允许用户修改TextBox里的值,这是比较常见的一种做法,目的是不希望再对用户的输入做进一步的格式验证。请看下面的代码:

view plaincopy to clipboardprint?
  1. <asp:TextBox ID="txtDayOfBirth" ReadOnly="True" runat="server" Width="100px"></asp:TextBox>  
  2. <asp:ImageButton ID="datePickerImg" runat="server" ImageUrl="~/images/calendar.png" AlternateText="请点击本按钮以选择日期" CausesValidation="false" />  
  3. <Ajax:CalendarExtender   ID="dayOfBirthCalendarExtender"    
  4.           runat="server"    
  5.           Enabled="True"    
  6.           TargetControlID="txtDayOfBirth"    
  7.           CssClass="MyCalendar"  
  8.           PopupButtonID="datePickerImg"    
  9.           Format="yyyy年MM月dd日"    
  10.           Animated="false" />  

    在运行以后,可以通过TextBox边上的日历按钮来选择日期,但是这样做会导致读不到TextBox里文本的问题。解决办法其实很简单,就是,先不在设计中加入ReadOnly属性,而是在Page_Load中动态加入该属性。代码如下:

ASPX页面

view plaincopy to clipboardprint?
  1. <asp:TextBox ID="txtDayOfBirth" runat="server" Width="100px"></asp:TextBox>     
  2. <asp:ImageButton ID="datePickerImg" runat="server" ImageUrl="~/images/calendar.png" AlternateText="请点击本按钮以选择日期" CausesValidation="false" />     
  3. <Ajax:CalendarExtender   ID="dayOfBirthCalendarExtender"       
  4.           runat="server"       
  5.           Enabled="True"       
  6.           TargetControlID="txtDayOfBirth"       
  7.           CssClass="MyCalendar"     
  8.           PopupButtonID="datePickerImg"       
  9.           Format="yyyy年MM月dd日"       
  10.           Animated="false" />    

C#后台代码

view plaincopy to clipboardprint?
  1. protected void Page_Load(object sender, EventArgs e)   
  2. {   
  3.     if (!Page.IsPostBack)   
  4.         txtDayOfBirth.Attributes.Add("readonly""true");   
  5. }   

    希望本文能帮到遇到类似问题的网友。

转载于:https://www.cnblogs.com/daxnet/archive/2009/03/06/1686987.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值