Динамический элемент управления загрузкой файлов удаляет выбранный файл при добавлении дополнительного C#

#c# #asp.net #multifile-uploader

#c# #asp.net #загрузчик нескольких файлов

Вопрос:

У меня есть форма, в которой пользователь может добавлять столько вложений, сколько он хочет, с помощью управления обновлением, нажав кнопку «Добавить вложение». Они должны выбирать тип вложения каждый раз, когда они загружают новый файл. Но если я выбираю файл и выбираю тип, а затем нажимаю кнопку «Добавить вложение», он удаляет мой первый выбор из раскрывающегося списка «Загрузка файла» и «Тип файла». Я использовал даже UpdatePanel, но все тот же. Вот картинка:

Элемент управления загрузкой Pic

Вот мой код на C #:

     protected void btnAddAttachment_Click(object sender, EventArgs e)
    {
        if (ViewState["AdditionalFilesTable"] != null)
        {
            DataTable dt = new DataTable();
            dt = (DataTable)ViewState["AdditionalFilesTable"];

            DataRow drCurrentRow = null;
            drCurrentRow = dt.NewRow();

            drCurrentRow[0] = "";

            dt.Rows.Add(drCurrentRow); // add grid values in to row and add row to the blank table
            ViewState["AdditionalFilesTable"] = dt;

            GridView1.DataSource = dt; // bind new datatable to grid
            GridView1.DataBind();

        }
        else
        {
            CreateFileUploadtable();
        }
    }
  

Вот мой HTML-код:

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
   <ContentTemplate>
        <tr>
             <td colspan="3" style="text-align:center; padding-top:25px; font-size:medium;text-align:center">                      
                     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" style="margin:0px auto;">
                         <Columns>
                             <asp:TemplateField>
                                 <HeaderTemplate>
                                   Upload Files
                                 </HeaderTemplate>

                                 <ItemTemplate>
                                     <table style="width:100%" >
                                         <tr>
                                             <td>
                                                 File:
                                             </td>
                                             <td>
                                                 <asp:FileUpload ID="fUpControl" runat="server" Width="300px" />
                                                 <asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("FileContent") %>' />
                                                 <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Please Upload File!" ControlToValidate="fUpControl" Display="Dynamic" ValidationGroup="WireTransfer" Font-Bold="True" Font-Size="Smaller" ForeColor="Red"></asp:RequiredFieldValidator>
                                         </td>
                                         <td>
                                                 File type:
                                         </td>
                                         <td>
                                                 <asp:DropDownList ID="ddlFileType" runat="server" Width="200px">
                                                     <asp:ListItem Value="0">-- Select Type --</asp:ListItem>
                                                     <asp:ListItem Value="Invoice">Invoice</asp:ListItem>
                                                     <asp:ListItem Value="Email">Email</asp:ListItem>
                                                     <asp:ListItem Value="WireDetails">Wire Details</asp:ListItem>
                                                     <asp:ListItem Value="WireConfirmation">Wire Confirmation</asp:ListItem>
                                                     <asp:ListItem Value="BankStatement">Bank Statement</asp:ListItem>
                                                     <asp:ListItem Value="ClosingDocument">Closing Document</asp:ListItem>
                                                 </asp:DropDownList>
                                                 <asp:HiddenField ID="HiddenField2" runat="server" Value='<%# Eval("FileType") %>' />
                                                 <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Please Select File Type!" ControlToValidate="ddlFileType" Display="Dynamic" InitialValue="0" ValidationGroup="WireTransfer" Font-Bold="True" Font-Size="Smaller" ForeColor="Red"></asp:RequiredFieldValidator>
                                             </td>
                                             <td>
                                                 <asp:Button ID="btnDeleteAttachment" runat="server" Text="Delete" Width="80px" OnClick="btnDeleteAttachment_Click"/>
                                             </td>
                                         </tr>
                                     </table>
                                 </ItemTemplate>
                             </asp:TemplateField>
                         </Columns>
                     </asp:GridView>
                 </td>
             </tr>
             <tr>
                 <td style="text-align:center; font-size:medium; font-style:oblique; padding-bottom:5px;" colspan="3">
                                    <asp:Button ID="btnAddAttachment" runat="server" Text="Add Attachment" width="150px" OnClick="btnAddAttachment_Click"  />

             <tr>
                 <td style="text-align:center; font-size:medium; font-style:oblique; padding-bottom:5px;" colspan="3">
                     amp;nbsp;</td>
             </tr>
             <tr>
                 <td style="text-align:center; font-size:medium; font-style:oblique; padding-bottom:5px;" colspan="3">
                    <asp:Button ID="btnSubmit" runat="server" Text="Submit" width="150px" OnClick="btnSubmit_Click" ValidationGroup="WireTransfer"/>                        
                 </td>
             </tr>
         </ContentTemplate>
         <Triggers>
                <asp:PostBackTrigger ControlID="btnSubmit" />
         </Triggers>
         </asp:UpdatePanel>     
  

Комментарии:

1. когда вы нажимаете добавить вложение, оно отправляет сообщение обратно, и все выбранные файлы должны исчезнуть. если вы хотите сохранить их, вам нужно использовать Java script для создания дополнительного элемента управления вложениями.

2. @TonyDong У меня это было раньше с Java script, но тогда я не смог добавить раскрывающийся список для него с помощью Java script. Я имею в виду, я не знал, как я мог добавить типы.

3. вы можете использовать var fu1 = document.getElementById(«<%= FileUpload1.ClientID %>»).значение; чтобы получить имя загружаемого файла и сохранить его в скрытом поле. var x = document.getElementById(‘<%= hdnSomeField . ClientID %>’); x.value = ‘hi’; после обратной отправки вы можете получить его значение из скрытого поля и установить его обратно для управления загрузкой файлов.