“下载”命令显示在所有行的前面,我只想将其显示给数据库中附加了PDF文件的那些行。
protected void gvupdationsummary_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(st);
con.Open();
SqlCommand com = new SqlCommand("select [name],[data] from [Pragati].[dbo].[Pragati_Status_Updations] where Pragati_no=@Pragati_no", con);
com.Parameters.AddWithValue("Pragati_no", gvupdationsummary.SelectedRow.Cells[3].Text);
SqlDataReader dr = com.ExecuteReader();
if (dr.Read())
{
Response.Clear();
Response.Buffer = true;
//Response.ContentType = dr["type"].ToString();
Response.AddHeader("content-disposition", "attachment;filename=" + dr["name"].ToString());
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.BinaryWrite((byte[])dr["data"]);
Response.End();
}
else
{
// ...
}
}
答案 0 :(得分:1)
您显示的代码似乎已经进行了实际的PDF下载。您无法采取任何措施防止显示下载按钮或链接。
相反,您需要更改为gvupdationsummary
提供数据的SQL查询,并在其中添加诸如HasPDF
之类的列,如下所示:
SELECT /* your columns */ ,
CAST(CASE WHEN [data] IS NULL THEN 0 ELSE 1 END AS BIT) AS HasPDF
FROM ....
WHERE ....
然后,在网格渲染代码中,可以使用布尔值 HasPDF
决定是否应显示“下载”按钮。
使用这种方法,您不必在每次渲染网格时都将所有PDF二进制数据从数据库不必要地传输到应用程序。
答案 1 :(得分:0)
您可以使用SQLDataReader
的{{1}}方法查看该列是否包含不存在或缺失的值。
IsDBNull