Fileupload с не работает внутренней панели обновления во вложенной таблицы ASP.NET с#
Привет.
У меня возникли проблемы с работой над управлением FileUpload внутри UpdatePanel.
На самом деле у меня есть 2 сценария
1. кнопка добавлена в AsyncPostBackTrigger, но она не может обнаружить HasFiles FileUpload.
2. Если кнопка добавлена в качестве PostBackTrigger в панели обновления, она вызывает полную страницу post back, которая закрывает мою вложенную сетку, когда она должна оставаться открытой. Вот мой код.
HTML / ASP.NET
Это поле шаблона находится внутри дочернего gridview GridView1 (у меня есть 2 вложенных gridviews)
<asp:TemplateField HeaderText="Payslip Document" ItemStyle-Width="15%"> <ItemTemplate> <asp:UpdatePanel ID="upPayslipUpload" runat="server" UpdateMode="Conditional"> <Triggers> <asp:PostBackTrigger ControlID="btnUpload" /><%--This line causes full page post back--%> <%--<asp:AsyncPostBackTrigger EventName="Click" ControlID="btnUpload" />--%> <%--This line cannot detect HasFile--%> </Triggers> <ContentTemplate> <asp:FileUpload ID="btnPayslipUpload" runat="server" /> <asp:Button id="btnUpload" runat="server" CssClass="fas fa-upload" OnClick="btnUpload_Click"></asp:Button> <p><asp:Label ID="lblPayslipUploadErr" runat="server" CssClass="error"></asp:Label></p> </ContentTemplate> </asp:UpdatePanel> </ItemTemplate> </asp:TemplateField>
Что я уже пробовал:
Вот мой код-зад
protected void btnUpload_Click(object sender, EventArgs e) { var btnUpload = (Button)sender; var gvRow = (GridViewRow)btnUpload.Parent.Parent.Parent.Parent; var btnPayslipUpload = (FileUpload)gvRow.FindControl("btnPayslipUpload"); var lblPayslipUploadErr = (Label)gvRow.FindControl("lblPayslipUploadErr"); var upPayslipUpload = (UpdatePanel)gvRow.FindControl("upPayslipUpload"); lblPayslipUploadErr.Text = ""; if (btnPayslipUpload.HasFile) { if(FileUploadValidateExt(btnPayslipUpload.FileName)) { if (FileUploadValidateFileSize(btnPayslipUpload.PostedFile.ContentLength)) { } else { lblPayslipUploadErr.Text = $"Maximum size exceeded. Accepted: {maxFileSizeInKB} KB."; } } else { //INVALID FILE NAME lblPayslipUploadErr.Text = $"Please upload a file with extension {fileExtension}"; } } }
Вот такой дизайн
ИЗОБРАЖЕНИЕ