Tôi đang phát triển một ứng dụng ASP.NET với C# và Visual Studio 2008 SP1. Tôi đang sử dụng WebForms.FileUpload và UpdatePanel: ScriptManager.RegisterPostBackControl hoạt động lần thứ hai
Tôi có một trang ASPX với hai UpdatePanels, một ở bên trái chứa TreeView và một ở bên phải nơi tôi tải các điều khiển người dùng động.
Một điều khiển người dùng, mà tôi đã sử dụng trên bảng điều khiển bên phải, có một điều khiển FileUpload và một nút để lưu tệp đó trên máy chủ. Mã ascx để lưu kiểm soát là:
<asp:UpdatePanel ID="UpdatePanelBotons" runat="server" RenderMode="Inline"
UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="Save" runat="server" Text="Guardar"
onclick="Save_Click" CssClass="button" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="Save" />
</Triggers>
</asp:UpdatePanel>
Tôi thực hiện đăng lại đầy đủ để tải tệp lên máy chủ và lưu tệp vào cơ sở dữ liệu. Nhưng tôi luôn nhận được False trên FileUpload.HasFile.
Vấn đề của tôi là UpdatePanel phù hợp. Tôi cần nó để tự động điều khiển người dùng. Bảng điều khiển này có ba UpdatePanels để tải ba điều khiển người dùng mà tôi sử dụng.
Có thể tôi có thể sử dụng Trình tải lên tệp không đồng bộ hoặc xóa Bảng cập nhật phù hợp và thực hiện đăng lại đầy đủ để tải điều khiển động.
Bạn có lời khuyên nào không?
UPDATE:
RegisterPostBackControl
làm việc ... lần thứ hai tôi bấm vào nút tiết kiệm. Lần đầu tiên FileUpload.HasFile là FALSE và lần thứ hai là TRUE.
Second Cập nhật
Khi được nhấp đầu tiên tôi cũng kiểm tra ScriptManager.IsInAsyncPostBack và là FALSE. Tôi không hiểu bất cứ điều gì !!
Tại sao?
Mã để tải điều khiển người dùng lần đầu tiên, và trên mỗi postback là:
DynamicControls.CreateDestination ud =
this.LoadControl(ucUrl) as DynamicControls.CreateDestination;
if (ud != null)
{
Button save = ud.FindControl("Save") as Button;
if (save != null)
ScriptManager1.RegisterPostBackControl(save);
PanelDestination.Controls.Add(ud);
}
Cảm ơn bạn.
Bump. Bạn nên chấp nhận một trong những câu trả lời này. –