2010-10-21 19 views
5

Tôi có một nút, cập nhật giá trị trong cơ sở dữ liệu. Giá trị này được sử dụng để xác định nội dung cần vẽ trên trang. Do vòng đời của trang mặc dù, trang vẽ lại trước khi phương thức nhấp nút được thực thi, có nghĩa là mọi thay đổi sẽ không được phản ánh cho đến khi trang được tải lại.Phương thức nhấp nút chạy sau khi tải trang, có nghĩa là trang không cập nhật, làm cách nào tôi có thể giải quyết vấn đề này?

Giải pháp tốt nhất cho việc này là gì?

Để làm rõ:

Trang có một đoạn văn bản, nói rằng: "Tôi thích mèo" nếu giá trị cơ sở dữ liệu là 1

nút 'Tôi ghét mèo' được nhấn, thiết lập giá trị cơ sở dữ liệu 0

trang web load lại, nhưng vẫn nói: "tôi thích mèo"

nút sự kiện nhấp chuột được xử lý, và giá trị cơ sở dữ liệu trở nên 0

Nếu trang được làm mới/tải lại, bây giờ nó chính xác nói "Tôi ghét mèo"

Nó sẽ cập nhật khi nút được nhấp mặc dù.

+1

Hmm..i không chắc chắn những gì bạn có ý nghĩa bởi "trang redraws trước bấm nút được thực thi ". Nhấp chuột vào nút bạn đang đề cập đến sự kiện phía máy chủ? Nếu vậy, sau đó nó phải được thực hiện trước khi sự kiện OnRender của trang ... Tham khảo http://msdn.microsoft.com/en-us/library/ms178472.aspx – InSane

+0

Làm rõ vấn đề của tôi một chút – NibblyPig

+0

Trường hợp chính xác là phần của mã chịu trách nhiệm hiển thị "Tôi ghét mèo tình yêu"? – Preets

Trả lời

6

bạn có thể sử dụng page prerender event. ngọn lửa này sau sự kiện kiểm soát trong số page lifecycle.

+0

điều này sẽ hoạt động, nhưng vì một lý do nào đó trình xử lý sự kiện của tôi không hoạt động khi chúng được đặt trong sự kiện kết xuất trước. Tuy nhiên tôi chỉ nhận ra rằng tôi có thể làm cho họ tĩnh và hiển thị/ẩn chúng hơn là tự tạo ra chúng ... vì vậy điều này hy vọng sẽ làm việc – NibblyPig

+0

mát mẻ. cho tôi biết nếu điều này hoạt động ... – rauts

+0

Nó có thể sẽ làm việc nhưng kể từ bây giờ tôi chỉ hiển thị/ẩn điều khiển, tôi có thể làm điều đó với page_load. Cảm ơn sự giúp đỡ của bạn mặc dù, nó đã cho tôi câu trả lời đúng cuối cùng! – NibblyPig

0

Bạn đang truy vấn cơ sở dữ liệu ở đâu? Một tùy chọn dễ dàng sẽ chỉ là sử dụng Response.Redirect trở lại trang.

Tôi nghĩ bạn có thể lấy kết quả từ phương thức nút và chỉ cập nhật nhãn/chữ.

0

Một giải pháp khả thi là thực thi hàm javascript cập nhật cơ sở dữ liệu (sử dụng ajax) khi sự kiện OnClientClick cho nút được nâng lên. Trong trường hợp này, khi trang đạt đến sự kiện Page_Load, bạn sẽ có thể hiển thị nội dung thích hợp, khi postback xảy ra sau khi tập lệnh được thực hiện. Nó sẽ hoạt động tốt nếu cập nhật cơ sở dữ liệu mất một lượng thời gian tương đối nhỏ.

0

Một sự tò mò, đang sử dụng bất kỳ thứ gì như Page.IsPostBack {do something} .. Nếu có, bạn có thể kiểm tra xem mã giao diện người dùng cập nhật của bạn có nằm ngoài séc này không.

5

Bạn có thể giải quyết vấn đề của bạn bằng cách mã bên dưới, sử dụng mục đích này của button_click khối

cho ASPX: (C#)

Response.Redirect(HttpContext.Current.Request.Path); 
+0

Cảm ơn bạn rất nhiều. Được đấu tranh với vấn đề này cho một vài ngày nay, và tôi không bao giờ có thể tìm thấy bất kỳ câu trả lời thích hợp, nhưng bạn đã làm việc hoàn hảo. – Loyalar

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