简体   繁体   English

如何使用链接按钮下载PDF文件?

[英]How to download PDF file using link button?

I have to download pdf file using link button that is binded with grid view. 我必须使用与网格视图绑定的链接按钮下载pdf文件。 I have uploaded pdf into database table as in varbinary format. 我已将pdf以varbinary格式上载到数据库表中。 The given below table cad_file column contains pdf files. 下表cad_file列中给出了pdf文件。 While clicking "version_no" drop down list, I have to bind pdf and all other datas with gridview. 在单击“ version_no”下拉列表时,我必须将pdf和所有其他数据与gridview绑定。 And by click on that I want to download pdf. 然后点击我要下载pdf的文件。 How can I do that. 我怎样才能做到这一点。 Help me to find a proper solution. 帮助我找到适当的解决方案。 Thank you. 谢谢。

Code: 码:

protected void ddlVersionNo_SelectedIndexChanged(object sender, EventArgs e)
    {
        ShadingAnalysisDataSetTableAdapters.tbl_CadFileUploadTableAdapter cd;
        cd = new ShadingAnalysisDataSetTableAdapters.tbl_CadFileUploadTableAdapter();
        DataTable dt = new DataTable();
        dt = cd.GetGvCad2(ddlSiteID.SelectedValue, int.Parse(ddlVersionNo.SelectedValue));
        gvCadPdf.DataSource = dt;
        gvCadPdf.DataBind();
    }

SQL: SQL:

SELECT Id, District, SiteName, Site_ID, Created_Date, Created_By, State, Updated_Date, Updated_By, Version_Status, Version_No, Cad_File, Cad_File_Name FROM tbl_CadFileUpload WHERE (Site_ID = @Site_ID) AND (Version_No = @Version_No)

ASPX: ASPX:

在此处输入图片说明

在此处输入图片说明

DB: D B:

在此处输入图片说明

ScreenShot1: 屏幕截图1:

在此处输入图片说明

ScreenShot2: 屏幕截图2:

在此处输入图片说明

given below is the working code for download pdf using link button. 下面给出的是使用链接按钮下载pdf的工作代码。 Thank you all for valuable comments. 谢谢大家的宝贵意见。

Code: 码:

  protected void lnkDownload_Click(object sender, EventArgs e)
        {
            LinkButton lnkbtn = sender as LinkButton;
            GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow;
            int fileid = Convert.ToInt32(gvCadPdf.DataKeys[gvrow.RowIndex].Value.ToString());
            string name, type;
            using (SqlConnection con = new SqlConnection(strCon))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.CommandText = " SELECT Id, Cad_File, Cad_File_Name, type From  tbl_CadFileUpload   WHERE Id=@Id";
                    cmd.Parameters.AddWithValue("@id", fileid);
                    cmd.Connection = con;
                    con.Open();
                    SqlDataReader dr = cmd.ExecuteReader();
                    if (dr.Read())
                    {
                        Response.ContentType = dr["type"].ToString();
                        Response.AddHeader("Content-Disposition", "attachment;filename=\"" + dr["Cad_File_Name"] + "\"");
                        Response.BinaryWrite((byte[])dr["Cad_File"]);
                        Response.End();
                    }
                }
            }
        }

ASPX: ASPX:

 <asp:GridView ID="gvCadPdf" runat="server" OnSelectedIndexChanged="gvCadPdf_SelectedIndexChanged"  AutoGenerateColumns="False" DataKeyNames="Id">
 <Columns>
 <asp:BoundField DataField="Id" HeaderText="Sl No" ReadOnly="True" SortExpression="Id" />
 <asp:BoundField DataField="State" HeaderText="State" ReadOnly="True" SortExpression="State" />
 <asp:BoundField DataField="District" HeaderText="District" ReadOnly="True" SortExpression="District" />
 <asp:BoundField DataField="SiteName" HeaderText="Site Name" ReadOnly="True" SortExpression="SiteName" />
 <asp:BoundField DataField="Site_ID" HeaderText="Site ID" ReadOnly="True" SortExpression="Site_ID" />
 <asp:BoundField DataField="Created_Date" HeaderText="Created Date" ReadOnly="True" SortExpression="Created_Date" />
 <asp:BoundField DataField="Updated_Date" HeaderText="Updated Date" ReadOnly="True" SortExpression="Updated_Date" />
 <asp:BoundField DataField="Created_By" HeaderText="Created By" ReadOnly="True" SortExpression="Created_By" />
 <asp:BoundField DataField="Updated_By" HeaderText="Updated By" ReadOnly="True" SortExpression="Updated_By" />
 <asp:BoundField DataField="Version_No" HeaderText="Version No" ReadOnly="True" SortExpression="Version_No" />
 <asp:BoundField DataField="Cad_File_Name" HeaderText="Cad File Name" ReadOnly="True" SortExpression="Cad_File_Name" />

 <asp:TemplateField HeaderText="FilePath">
 <ItemTemplate>
 <asp:LinkButton ID="lnkDownload" runat="server" Text="Download" OnClick="lnkDownload_Click"></asp:LinkButton>
 </ItemTemplate>
 </asp:TemplateField>

 </Columns>
</asp:GridView>

DB: D B:

在此处输入图片说明

try this code. 试试这个代码。 DropDown SelectedIndexChanged DropDown SelectedIndexChanged

protected void ddlVersionNo_SelectedIndexChanged(object sender, EventArgs e)

{
    int Demo=ddlVersionNo.SelectedValue;
}

GridViewRowCommand GridViewRowCommand

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "LinkButton")
        {
             ShadingAnalysisDataSetTableAdapters.tbl_CadFileUploadTableAdapter cd;
        cd = new ShadingAnalysisDataSetTableAdapters.tbl_CadFileUploadTableAdapter();
        DataTable dt = new DataTable();
        dt = cd.GetGvCad2(ddlSiteID.SelectedValue, int.Parse(Demo));
        gvCadPdf.DataSource = dt;
        gvCadPdf.DataBind();
        }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM