【问题标题】:Clear all fields after the pdf is generated [duplicate]生成pdf后清除所有字段[重复]
【发布时间】:2016-06-23 05:44:27
【问题描述】:

我有一个包含一些文本框和下拉菜单的 Web 表单。

点击保存按钮后,数据将保存在数据库中,并使用该数据生成 pdf。

pdf生成后,pdf文件在浏览器中打开。

我已经使用一种方法生成了 pdf 文件,然后在我调用一种方法来清除所有字段之后。

生成 pdf 后,用户可以按返回按钮并返回上一页,由于这个原因,我希望清除所有字段但它不起作用。我该如何解决这个问题?

这是我的代码:

保存按钮代码

 protected void btn_submit_Click(object sender, EventArgs e)
    {
        if (IsValidQuotation())
        {
            string newQuotNum = rental_quotations.GetNewQuotNumber();
            double max_load = (Convert.ToDouble(generator_category.GetGeneratorDesc(ddl_gene_desc.SelectedValue)) * 0.8) * ((double)80 / (double)100);
            double min_load = (Convert.ToDouble(generator_category.GetGeneratorDesc(ddl_gene_desc.SelectedValue)) * 0.8) * ((double)50 / (double)100);
            rental_quotations.AddNewQuotation(newQuotNum, Session["empcd"].ToString(), ddl_gene_type.SelectedValue.ToString(), ddl_gene_desc.SelectedValue, ddl_canopy.SelectedValue, txt_company.Text, txt_address.Text, txt_contactperson.Text, txt_designation.Text, txt_contact1.Text, txt_contact2.Text, txt_rentalamount.Text, ddl_terms.SelectedValue, txt_hours.Text, txt_variable.Text, txt_remarks.Text, min_load.ToString(), max_load.ToString(),ddl_sign1.SelectedValue,ddl_sign2.SelectedValue);
            GetPDF(newQuotNum);
        }
    }

这是生成PDF的方法:

public void GetPDF(string quote_num)
    {
        string url = FilesPath.Path_SaveFile + Session["empcd"].ToString() +"-Quotation.pdf";
        Document disclaimer = new Document(PageSize.A4, 2, 2, 10, 10);
        PdfWriter writer = PdfWriter.GetInstance(disclaimer, new FileStream(url, FileMode.Create));
        writer.PageEvent = new myPDFpgHandler(quote_num);
        disclaimer.SetMargins(10, 10, 70,80);
        disclaimer.Open();
        GenerateQuotPDF getpdf = new GenerateQuotPDF();
        disclaimer = getpdf.GetPDFparams(disclaimer,quote_num, Session["empcd"].ToString(),txt_contactperson.Text,txt_contact1.Text,txt_company.Text,txt_address.Text,ddl_gene_desc.SelectedItem.ToString(),ddl_canopy.SelectedItem.ToString(),ddl_gene_type.SelectedItem.ToString(),txt_rentalamount.Text,txt_hours.Text,txt_variable.Text,ddl_terms.SelectedItem.ToString(),txt_remarks.Text,txt_technical.Text,ddl_sign1.SelectedValue,ddl_sign2.SelectedValue,txt_designation.Text,DateTime.Now);
        disclaimer.Close();
        ClearAllFields(); // this is not working in back Case 
        System.IO.FileInfo file = new System.IO.FileInfo(url);
        if (file.Exists)
        {
            WebClient client = new WebClient();
            Byte[] buffer = client.DownloadData(url);
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-length", buffer.Length.ToString());
            Response.BinaryWrite(buffer);
        }
    }

pdf在浏览器中打开后,用户可以返回该页面,所有字段都不会被清除

我该如何处理???

感谢您的帮助

【问题讨论】:

  • 在 GetPDF 函数关闭之前,创建一个函数来清除 TextBox.text = string.empty; 等字段。它能解决你的问题吗?
  • 请查看此链接。 stackoverflow.com/questions/2301278/…子窗口
  • 亲爱的,我应该在这个链接中看到什么

标签: c# asp.net itext


【解决方案1】:

您可以通过使用页面的 enableviewstate='false' 来实现

您可以在执行“GetPDF(newQuotNum)”函数调用后重置所有控制值。像这样

protected void btn_submit_Click(object sender, EventArgs e)
{
    if (IsValidQuotation())
    {
        string newQuotNum = rental_quotations.GetNewQuotNumber();
        double max_load = (Convert.ToDouble(generator_category.GetGeneratorDesc(ddl_gene_desc.SelectedValue)) * 0.8) * ((double)80 / (double)100);
        double min_load = (Convert.ToDouble(generator_category.GetGeneratorDesc(ddl_gene_desc.SelectedValue)) * 0.8) * ((double)50 / (double)100);
        rental_quotations.AddNewQuotation(newQuotNum, Session["empcd"].ToString(), ddl_gene_type.SelectedValue.ToString(), ddl_gene_desc.SelectedValue, ddl_canopy.SelectedValue, txt_company.Text, txt_address.Text, txt_contactperson.Text, txt_designation.Text, txt_contact1.Text, txt_contact2.Text, txt_rentalamount.Text, ddl_terms.SelectedValue, txt_hours.Text, txt_variable.Text, txt_remarks.Text, min_load.ToString(), max_load.ToString(),ddl_sign1.SelectedValue,ddl_sign2.SelectedValue);
        GetPDF(newQuotNum);
        ClearForm();
    }
}

private void ClearForm()
{
    foreach( var control in this.Controls )
    {
         var textbox = control as TextBox;
         if (textbox != null)
              textbox.Text = string.Empty;

         var dropDownList = control as DropDownList;
         if (dropDownList != null)
              dropDownList.SelectedIndex = 0;

         }
 }

希望这能解决您的问题。

【讨论】:

  • 这不是同样的问题
  • 你试过 enableviewstate='false' 为整个页面
  • 不,我不能尝试 enableviewstate=false 因为这里也是一个预览按钮,在保存到数据库之前会生成 pdf,如果用户想要更改任何内容,他可以返回并编辑更改
  • 在 GetPDF 函数关闭之前,创建一个函数来清除 TextBox.text = string.empty; 等字段。它能解决你的问题吗?
  • 使用页面的Prerender事件并清除该事件中的所有控件 protected void Page_PreRender(object sender, EventArgs e) { //生成PDF功能完成时清除所有值的代码}
猜你喜欢
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 2017-07-26
  • 2014-09-25
相关资源
最近更新 更多