Может быть некрасиво, но работает:
1) Добавить скрытую css asp: кнопку ниже элемента asp: AsyncFileUpload AsyncFileUpload1
.
<asp:Button runat="server" ID="btnClick" Text="Update grid" style="display:none"/>
2) Вклметод Page_Load
, удалите if (Request.Params.Get("__EVENTTARGET") == "UploadPostback")
и поместите его блок в простой else
к предыдущему if
.
3) В функции AsyncFileUpload1_UploadedComplete
также удалите строку if (Request.Params.Get("__EVENTTARGET") != "UploadPostback")
, но оставьте без изменений все, что было внутри него.
4) Вернуться к aspx.Поместите asp: UpdatePanel за пределы сетки GridView1.
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnClick" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:GridView ID="GridView1" ...
YOUR GRID CODE REMAINS THE SAME
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
5) Последний шаг - изменить функцию javascript AjaxUploadComplete
на стороне клиента, чтобы она запускала обратную передачу.Замените его следующим:
function AjaxUploadComplete() {
var btnClick = document.getElementById("btnClick");
btnClick.click();
}
Любой файл, выбранный пользователем, загружается только один раз.
Все изменения здесь должны быть внесены в AjaxUpload.aspx & AjaxUpload.aspx.cs ofваш AjaxUpload.zip.