簡體   English   中英

如何使用鏈接按鈕下載PDF文件?

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

我必須使用與網格視圖綁定的鏈接按鈕下載pdf文件。 我已將pdf以varbinary格式上載到數據庫表中。 下表cad_file列中給出了pdf文件。 在單擊“ version_no”下拉列表時,我必須將pdf和所有其他數據與gridview綁定。 然后點擊我要下載pdf的文件。 我怎樣才能做到這一點。 幫助我找到適當的解決方案。 謝謝。

碼:

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:

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:

在此處輸入圖片說明

在此處輸入圖片說明

D B:

在此處輸入圖片說明

屏幕截圖1:

在此處輸入圖片說明

屏幕截圖2:

在此處輸入圖片說明

下面給出的是使用鏈接按鈕下載pdf的工作代碼。 謝謝大家的寶貴意見。

碼:

  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:

 <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>

D B:

在此處輸入圖片說明

試試這個代碼。 DropDown SelectedIndexChanged

protected void ddlVersionNo_SelectedIndexChanged(object sender, EventArgs e)

{
    int Demo=ddlVersionNo.SelectedValue;
}

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