2015년 10월 29일 목요일

RegisterPostBackControl add & file download for dynamic LinkButton

asp.net
<asp:TemplateField HeaderText="name">
    <ItemTemplate><asp:LinkButton ID="lbFildDW" CommandArgument='<%# Bind("DOCBIGO") %>' runat="server" Text='<%# Bind("DOCNAME") %>' OnClick="ExcelDW_Click"></asp:LinkButton> </ItemTemplate>
    <itemstyle horizontalalign="Center" Wrap="false"/> <headerstyle Wrap="false"/>
</asp:TemplateField>  

c#
protected void egvPopDDSearch_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        LinkButton lnkbtnDetail = (LinkButton)e.Row.FindControl("lbFildDW");
        ScriptManager.GetCurrent(this).RegisterPostBackControl(lnkbtnDetail);
    }
}

protected void ExcelDW_Click(object sender, EventArgs e)
{
    LinkButton btn = (LinkButton)(sender);
    string filePath = btn.CommandArgument;

    if (File.Exists(HttpContext.Current.Server.MapPath(filePath)))
    {
        string strFileName = "";
        strFileName = System.IO.Path.GetFileName(HttpContext.Current.Server.MapPath(filePath));
        strFileName = HttpUtility.UrlEncode(strFileName, new UTF8Encoding()).Replace("+", "%20");
        HttpContext.Current.Response.ContentType = "application/octet-stream";
        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + strFileName);
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.WriteFile(HttpContext.Current.Server.MapPath(filePath));
        HttpContext.Current.Response.End();
    }
}

댓글 없음: