Trong ứng dụng của tôi, tôi đang tạo tệp zip để Người dùng tải xuống một số thông tin cơ sở dữ liệu đã xuất. Tệp zip được tạo khi người dùng nhấp vào nút "tạo dữ liệu" và tôi ghi lại yêu cầu trong cơ sở dữ liệu.Bắt đầu tải xuống tệp sau khi đăng lại
Trên trang của tôi, tôi có GridView hiển thị lịch sử tải xuống của Người dùng và cũng cung cấp cho họ khả năng tải xuống tệp được tạo mới nhất trong một khoảng thời gian nhất định.
Vấn đề tôi gặp phải là khi họ nhấp vào nút, tôi muốn trang làm mới (do đó làm mới GridView và hiển thị yêu cầu mới nhất của họ) và sau đó bắt đầu tải xuống tệp cho họ (IE, hãy bật lên nhắc nhở và để họ quyết định xem có nên mở/lưu/hủy bỏ nó hay không).
Tôi có thể bắt đầu tải xuống trên bài đăng, nhưng Gridview của tôi không cập nhật trước khi nó bắt đầu để nó không hiển thị yêu cầu mới nhất trong danh sách. Làm thế nào tôi có thể nhận được GridView để cập nhật TRƯỚC KHI lời nhắc tải xuống bắt đầu?
Tôi đang sử dụng sau đây để bắt đầu tải về:
public void BeginDownload()
{
FileDownload download = InventoryService.GetLastThreeFileDownloads(this.EmployeeId).First();
FileInfo fi = new FileInfo(Server.MapPath(SERVER_DOWNLOAD_PATH) + download.DownloadFileName);
Response.Clear();
Response.ContentType = "application/zip";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fi.Name);
Response.TransmitFile(fi.FullName);
Response.Flush();
}
Phương pháp này được gọi là trong sự kiện Page_Load như mục cuối cùng, nếu một lĩnh vực ẩn được thiết lập là true (mà tôi thiết lập khi họ click nút để xây dựng tệp).
Tôi cũng đã thử thực hiện việc này thông qua các cuộc gọi jQuery/AJAX để làm mới trang và bắt đầu tải xuống với ít thành công. Tôi đã nghĩ về việc mở một hộp thoại phương thức và cho phép họ nhấp vào một liên kết để bắt đầu tải xuống và sau đó làm mới trang khi phương thức đóng, nhưng đó là phương sách cuối cùng nếu tôi không tìm được giải pháp khác.
Bất kỳ trợ giúp nào được đánh giá cao!
Tôi đã xây dựng một liên kết tải xuống vào GridView vì vậy nếu nó không tự khởi động hoặc họ hủy bỏ do nhầm lẫn, họ vẫn có thể tải xuống tệp vì nó được lưu trữ trên máy chủ. Cảm ơn những lời đề nghị, tôi chắc chắn sẽ nhìn vào chúng và xem cái nào hoạt động tốt nhất. – Delebrin