我有一个表单,用户可以在其中捕获有关发票的信息。作为该表格的一部分,用户可以将该发票的pdf文件副本上传并保存到数据库中。
我正在使用相同的表格来保存新的发票并编辑已捕获的发票。
我的问题是,当用户编辑一个已经存在的发票并保存其更改时,pdf文件发票会被覆盖为空白。
我不确定如何解决此问题并检索已保存的pdf文件发票,以便在用户保存更改后,pdf文件发票不会被空白覆盖。
这是我到目前为止所拥有的:
public void PopulateForm()
{
SqlConnection con = new SqlConnection(
WebConfigurationManager.ConnectionStrings["MyDbConn"].ConnectionString);
con.Open();
SqlDataReader myReader = null;
SqlCommand cmd = new SqlCommand("sp_displayVsoftInvoice", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("VSoftInvoiceID", txtID.Text);
myReader = cmd.ExecuteReader();
while (myReader.Read())
{
txtInvoiceNo.Text = (myReader["InvoiceNo"].ToString());
ddlInvoiceType.SelectedValue = (myReader["EventTypeID"].ToString());
txtDateSent.Text = (myReader["DateSent"].ToString());
txtDatePaid.Text = (myReader["DatePaid"].ToString());
string InvSent = (myReader["InvoiceSent"].ToString());
string InvPaid = (myReader["InvoicePaid"].ToString());
if (InvSent == "True")
{
cbxInvSent.Checked = true;
}
if (InvPaid == "True")
{
cbxInvPaid.Checked = true;
}
}
con.Close();
}
protected void btnSaveInvoice_Click(object sender, EventArgs e)
{
string filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
string contentType = FileUpload1.PostedFile.ContentType;
using (Stream fs = FileUpload1.PostedFile.InputStream)
{
using (BinaryReader br = new BinaryReader(fs))
{
byte[] bytes = br.ReadBytes((Int32)fs.Length);
SqlConnection con = new SqlConnection(
WebConfigurationManager.ConnectionStrings["MyDbConn"].ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand("sp_insertUpdateVsoftInvoice", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("VSoftInvoiceID", txtID.Text);
cmd.Parameters.AddWithValue("CenterID", ddlCenter.SelectedItem.Value);
cmd.Parameters.AddWithValue("InvoiceTypeID", ddlInvoiceType.SelectedItem.Value);
cmd.Parameters.AddWithValue("InvoiceNo", txtInvoiceNo.Text);
cmd.Parameters.AddWithValue("InvoiceSent", this.cbxInvSent.Checked ? "1" : "0");
cmd.Parameters.AddWithValue("InvoicePaid", this.cbxInvPaid.Checked ? "1" : "0");
cmd.Parameters.AddWithValue("DateSent", txtDateSent.Text);
cmd.Parameters.AddWithValue("DatePaid", txtDatePaid.Text);
cmd.Parameters.AddWithValue("InvoiceName", filename);
cmd.Parameters.AddWithValue("ContentType", contentType);
cmd.Parameters.AddWithValue("Data", bytes);
cmd.Parameters.AddWithValue("ModifiedBy", txtUser.Text);
cmd.Parameters.AddWithValue("DateModified", DateTime.Now);
cmd.ExecuteNonQuery();
con.Close();
Response.Redirect("VsoftInvoice.aspx");
}
}
}
请向我建议如何解决此问题,以使我已经保存的pdf发票不会被空白覆盖。 预先感谢!
答案 0 :(得分:0)
我们需要澄清以下两件事之一: 1-编辑而不上传文档时会发生这种情况吗?如果是,那么我认为您仅在上传文件后才需要保存文件(修改btnSaveInvoice_Click方法) 2-如果还有其他编辑方法,请共享代码 祝你好运。