zoukankan      html  css  js  c++  java
  • 使用CalendarExtender后无法获得TextBox.Text的值

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

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

    <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页面

    <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#后台代码

    protected void Page_Load(object sender, EventArgs e)    
    {    
        if (!Page.IsPostBack)    
            txtDayOfBirth.Attributes.Add("readonly", "true");    
    }  
  • 相关阅读:
    面向对象六
    面向对象五
    面向对象四
    面向对象三
    面向对象二
    CentOS7下安装Redis4.0
    在亚马逊的EC2环境中创建swap
    centos7安装rabbitmq操作步骤
    在VUE下使用阿里图标
    Centos7-安装telnet服务
  • 原文地址:https://www.cnblogs.com/chiyueqi/p/3011774.html
Copyright © 2011-2022 走看看