CalendarExtender會把textbox的值,當成default選擇日期,
所以它會把民國1010101當成西元1010101,
如果你仔細去看它的月曆,你會發現那根本不對.
知道原因之後就可以解了,
在CalendarExtender顯示前,把textbox換成西元年,並把它塞給CalendarExtender.
在CalendarExtender隱藏前,若textbox是西元年,就把textbox換回成民國年.
目前先用我爛爛的javascript去處理...
HTML
Page Is PostBack:<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br /> Default:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <br /> Select:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <br /> <asp:ImageButton runat="Server" ID="Image1" ImageUrl="~/images/Calendar_scheduleHS.png" AlternateText="Click to show calendar" /> <br /> <asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="TextBox2" DaysModeTitleFormat="yyyyMMMM" TodaysDateFormat="yyyyMMdd" Format="yyyyMMdd" FirstDayOfWeek="Sunday" PopupButtonID="Image1" OnClientDateSelectionChanged="toLocalDate" OnClientShowing="toAd" OnClientHiding="toRoc"> </asp:CalendarExtender>
javascript
<script type="text/javascript">
        $(function () {
            $('#tabs').tabs();
            if (!isPostBack) {
                $('#TextBox1').val(getNowDate());
            }
        });
        function getNowDate() {
            var d = new Date();
            var yy = d.getFullYear();
            var mm = d.getMonth() + 1;
            if (mm < 10) {
                mm = '0' + mm;
            }
            var dd = d.getDate();
            if (dd < 10) {
                dd = '0' + dd;
            }
            return yy + '' + mm + '' + dd;
        }
        function toLocalDate(sender, clientside_arguments) {
            var selectedDate = sender.get_selectedDate();
            var DateValue = sender._textbox.get_Value();
            var year = parseInt(DateValue.substr(0, 4)) - 1911;
            sender._textbox.set_Value(year + DateValue.substr(4, 4));
        }
        function toAd(sender, clientside_arguments) {
            var DateValue = sender._textbox.get_Value();
            var len = DateValue.length;
            if (len == 7) {
                var yy = parseInt(DateValue.substr(0, 3)) + 1911;
                var mm = parseInt(DateValue.substr(3, 2)) - 1;
                var dd = DateValue.substr(5, 2);
                var fullyy = yy;
                var newDate = yy + mm + dd;
                sender._textbox.set_Value(newDate);
                var utc = new Date();
                utc.setUTCFullYear(fullyy, mm, dd);
                sender.set_selectedDate(utc);
            }
        }
        function toRoc(sender, clientside_arguments) {
            var DateValue = sender._textbox.get_Value();
            var len = DateValue.length;
            if (len == 8) {
                var yy = parseInt(DateValue.substr(0, 4)) - 1911;
                var mm = DateValue.substr(4, 2);
                var dd = DateValue.substr(6, 2);
                var fullyy = DateValue.substr(0, 4);
                var newDate = yy + mm + dd;
                sender._textbox.set_Value(newDate);
            }
        }
    </script>
cs
protected void Page_Load(object sender, EventArgs e)
        {
            Label1.Text = Page.IsPostBack.ToString().ToLower();
            
            bool isPostBack = Page.IsPostBack;
            ClientScript.RegisterClientScriptBlock(GetType(), "IsPostBack", "var isPostBack = " + isPostBack.ToString().ToLower() + ";", true);
            if (!isPostBack)
            {
            DateTime now = DateTime.Now;
            TaiwanCalendar tc = new TaiwanCalendar();
            string today = tc.GetYear(now).ToString("000") + tc.GetMonth(now).ToString("00") + tc.GetDayOfMonth(now).ToString("00");
            this.TextBox2.Text = today;
            }
        }
 
 
沒有留言:
張貼留言