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;
}
}
沒有留言:
張貼留言