#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’; после обратной отправки вы можете получить его значение из скрытого поля и установить его обратно для управления загрузкой файлов.