You need to use Sender as AsyncFileUpload.
Ref:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<style type="text/css">
body
{
font-family: Arial;
font-size: 10pt;
}
</style>
<title>AsyncFileUpload Example</title>
<script type="text/javascript">
function uploadComplete(sender) {
$get("<%=lblMesg.ClientID%>").style.color = "green";
$get("<%=lblMesg.ClientID%>").innerHTML = "File Uploaded Successfully";
}
function uploadError(sender) {
$get("<%=lblMesg.ClientID%>").style.color = "red";
$get("<%=lblMesg.ClientID%>").innerHTML = "File upload failed.";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" />
<asp:TemplateField HeaderText="Upload">
<ItemTemplate>
<cc1:AsyncFileUpload OnClientUploadError="uploadError" OnClientUploadComplete="uploadComplete"
runat="server" ID="AsyncFileUpload1" Width="400px" UploaderStyle="Modern" CompleteBackColor="White"
UploadingBackColor="#CCFFFF" ThrobberID="imgLoader" OnUploadedComplete="FileUploadComplete" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Image ID="imgLoader" runat="server" ImageUrl="~/images/loader.gif" />
<br />
<asp:Label ID="lblMesg" runat="server" Text=""></asp:Label>
</form>
</body>
</html>
Namespace
using System.Xml.Linq;
using AjaxControlToolkit;
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[1] { new DataColumn("Id", typeof(int)) });
dt.Rows.Add(1);
dt.Rows.Add(2);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
protected void FileUploadComplete(object sender, EventArgs e)
{
string filename = System.IO.Path.GetFileName((sender as AsyncFileUpload).FileName);
(sender as AsyncFileUpload).SaveAs(Server.MapPath("Uploads/") + filename);
}
Screenshot
