Tôi có một DataList có một bộ sưu tập Những người bị ràng buộc với nó, với mỗi Người có một Nút mà khi được bấm cần phải tạo ra một postback không đồng bộ để trình xử lý sự kiện OnClick có thể thay đổi các chi tiết được hiển thị trong UpdatePanel [DataList nằm ngoài UpdatePanel].Làm cách nào để kích hoạt PostBack không đồng bộ cho UpdatePanel từ nút trong danh sách dữ liệu?
Tôi đã thực hiện hai lần cài đặt Nút để thay đổi UpdatePanel trong trình xử lý sự kiện OnItemDataBound của DataList. Một gán một AsyncPostBackTrigger cho UpdatePanel và cái còn lại là RegisterAsyncPostBackControl tới ScriptManager. Cả hai đều hoạt động nhưng chỉ là lần đầu tiên. Nếu nút của một người khác [hoặc cùng một nút cho lần thứ hai] được nhấn thì trang đó sẽ được đăng lại hoàn toàn.
UpdateMan UpdateMode được đặt thành Có điều kiện và ScriptManager có EnablePartialRenderingEnablePartialRendering được đặt thành true.
Mã trong OnItemDataBound:
Button btnShowNotes = e.Item.FindControl("btnShowNotes") as Button;
// Trigger
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = btnShowNotes.UniqueID;
trigger.EventName = "Click";
upDetails.Triggers.Add(trigger); // UpdatePanel
// The trigger or this is used, not both
ScriptManager1.RegisterAsyncPostBackControl(btnShowNotes);
Khi Async PostBack đầu tiên đã xảy ra có vẻ như để mất tài liệu tham khảo, nhưng chắc chắn điều này có thể được tiếp tục tồn mà không cần phải liên tục rebind DataList? Tôi phải thiếu một cái gì đó trong cách tôi đang cố gắng này.
Tìm kiếm câu trả lời vào cuối tuần có thể sẽ không thành công, nhưng khó chịu [thường] tôi cần điều này giải quyết trước thứ Hai vì các tính năng mới cần phát trực tiếp vào Thứ Hai và đây là điều duy nhất ngăn nó hoàn thành! – Rich