2010-09-01 39 views
9

Vì một số lý do, bất kỳ CalendarExtenders nào trên trang ASP.NET đang được làm việc sẽ không được cập nhật. Tôi đã kiểm tra tất cả các địa điểm rõ ràng (như AutoPostBack và AutoEventHandler). Vấn đề là khi tôi chọn một ngày từ Lịch và đăng nó vào biểu mẫu, Hộp văn bản đang được mở rộng IS đang được cập nhật, nhưng ngày của người mở rộng lịch đơn giản là không được cập nhật (ví dụ SelectedDate vẫn giống như trước) . Tôi đã googled cho bất kỳ giải pháp có thể nhưng không ai đã làm việc.ASP.NET Ajax CalendarExtender sẽ không cập nhật giá trị SelectedDate

Đây là mã:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" 
    AutoEventWireup="true" CodeBehind="ThePage.aspx.cs" Inherits="ThePage" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 

<asp:TextBox runat="server" ID="txtBlah" /> 
<asp:CalendarExtender ID="txtBlahExtender" runat="server" TargetControlID="txtBlah" Format="MMMM d, yyyy" /> 
<asp:Button runat="server" ID="btnSubmit" CausesValidation="false" /> 

và codebehind:

public partial class ThePage : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       txtBlahExtender.SelectedDate = DateTime.Today.AddDays(4); 
      } 
     } 

     protected void btnSubmit_Click(object sender, EventArgs e) 
     { 
     //do postback actions   
     } 
    } 
} 

Khi mã của tôi đạt đến "làm hành động postback", txtBlahExtender.SelectedDate là LUÔN DateTime.Today.AddDays (4) . Nó chỉ đơn giản là không đăng ký thay đổi.

Bất kỳ ý tưởng nào?

Cảm ơn, Logain Smith

(Có thể làm định dạng trên một câu hỏi?)

+0

Tôi đang gặp sự cố tương tự – Starwfanatic

Trả lời

15

Sau khi tìm kiếm Internet vô số lần, có vẻ như không khắc phục được sự cố này. Một giải pháp (nếu bạn muốn gọi nó đó) có thể tự gán SelectedDate sử dụng chuyển đổi từ hộp văn bản (điều này đòi hỏi bạn phải thiết lập định dạng trong đánh dấu, mặc dù):

if(IsPostBack) { 
blahCalendarExtender.SelectedDate = DateTime.ParseExact(blah.Text, blahCalendarExtender.Format, null); 
// do postback actions 
} else { 
// for instance, maybe initalize blahCalendarExtender to today 
blahCalendarExtender.SelectedDate = DateTime.Today; 
} 

(ở đâu blah là Text Kiểm soát và blahCalendarExtender là phần mở rộng mở rộng blah)

Dường như điều khiển calendarExtender phải đủ thông minh để thực hiện điều này theo mặc dù.

+0

+1 Sửa chữa rất hữu ích. –

+1

Tôi đặt ** blahCalendarExtender.SelectedDate = null; ** Vì vậy, tôi tránh các vấn đề nếu người dùng chèn vào một số ngày không phân biệt trong ** blah.Text **. Ngày do người dùng chọn cuối cùng được điền tự động bởi trạng thái xem. – Ephedra

0

Hãy chắc chắn để đặt texbox và mở rộng trong một UpdatePanel (Tôi không thấy điều này trong mã bạn đã cung cấp).

+0

Cập nhật - không hoạt động. Sau khi thêm UpdatePanel giá trị ngay lập tức reverts để giá trị ban đầu và từ chối để lại cho tôi thay đổi. – logain

0

Tôi đã tìm thấy một giải pháp rất lạ cho việc này.

Không khởi tạo giá trị cho hộp văn bản có bộ mở rộng lịch được đính kèm. Giữ hộp văn bản trống.

Các vấn đề liên quan