Hi dawsumn,
Refer below code and change as per your file path.
HTML
<asp:GridView ID="grdTaskHistory" runat="server" CssClass="table table-bordered table-condensed table-responsive" AutoGenerateColumns="false"
ShowHeaderWhenEmpty="true" Style="font-size: smaller; -ms-word-wrap: break-word; word-wrap: break-word; max-width: none; word-break: break-all;">
<HeaderStyle CssClass="headerRow panel-midnight-blue-header" />
<Columns>
<asp:BoundField HeaderText="Execution Date" DataField="STL_EXEC_DT" ItemStyle-Width="20%" />
<asp:BoundField HeaderText="Executed By" DataField="STL_EXEC_BY" ItemStyle-Width="10%" />
<asp:BoundField HeaderText="Comments" DataField="STL_COMMENTS" ItemStyle-Width="30%" />
<asp:BoundField HeaderText="Helpers" DataField="HELPERS" ItemStyle-Width="20%" />
<asp:TemplateField HeaderText="Document" ItemStyle-Width="20% ">
<ItemTemplate>
<asp:LinkButton runat="server" ID="btnDoc" Text='<%#Eval("DOC_NAME")%>' OnClick="btnDoc_Click"
CommandArgument='<%#Eval("STL_DOCUMENT_PATH")%>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
new DataColumn("STL_EXEC_DT"),
new DataColumn("STL_EXEC_BY"),
new DataColumn("STL_COMMENTS"),
new DataColumn("HELPERS"),
new DataColumn("DOC_NAME"),
new DataColumn("STL_DOCUMENT_PATH") });
dt.Rows.Add("03-03-2020", "John Hammond", "", "", "1.pdf", "1.pdf");
dt.Rows.Add("03-03-2020", "Mudassar Khan", "", "", "1.xlsx", "1.xlsx");
dt.Rows.Add("03-03-2020", "Suzanne Mathews", "", "", "1.pdf", "1.pdf");
dt.Rows.Add("03-03-2020", "Robert Schidner", "", "", "1.xlsx", "1.xlsx");
grdTaskHistory.DataSource = dt;
grdTaskHistory.DataBind();
}
}
protected void btnDoc_Click(object sender, EventArgs e)
{
string PATH_TO_WRITE_TEMP_FILES = "Files";
string filePath = Server.MapPath("~/" + PATH_TO_WRITE_TEMP_FILES + "/" + (sender as LinkButton).CommandArgument);
Response.ContentType = ContentType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + System.IO.Path.GetFileName(filePath));
Response.WriteFile(filePath);
Response.End();
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim dt As DataTable = New DataTable()
dt.Columns.AddRange(New DataColumn() {New DataColumn("STL_EXEC_DT"), New DataColumn("STL_EXEC_BY"), New DataColumn("STL_COMMENTS"), New DataColumn("HELPERS"), New DataColumn("DOC_NAME"), New DataColumn("STL_DOCUMENT_PATH")})
dt.Rows.Add("03-03-2020", "John Hammond", "", "", "1.pdf", "1.pdf")
dt.Rows.Add("03-03-2020", "Mudassar Khan", "", "", "1.xlsx", "1.xlsx")
dt.Rows.Add("03-03-2020", "Suzanne Mathews", "", "", "1.pdf", "1.pdf")
dt.Rows.Add("03-03-2020", "Robert Schidner", "", "", "1.xlsx", "1.xlsx")
grdTaskHistory.DataSource = dt
grdTaskHistory.DataBind()
End If
End Sub
Protected Sub btnDoc_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim PATH_TO_WRITE_TEMP_FILES As String = "Files"
Dim filePath As String = Server.MapPath("~/" & PATH_TO_WRITE_TEMP_FILES & "/" & (TryCast(sender, LinkButton)).CommandArgument)
Response.ContentType = ContentType
Response.AppendHeader("Content-Disposition", "attachment; filename=" & IO.Path.GetFileName(filePath))
Response.WriteFile(filePath)
Response.End()
End Sub