无法读取文本框值

时间:2014-02-18 11:32:50

标签: c# asp.net ajax

我在AjaxFileUpload1的pageupload事件期间从页面上的文本框中为变量赋值。问题是,即使没有错误抛出,我也没有从文本框中获取值到我的变量。我变量是

        string scn = txtSCN.Text;
        string line1 = txtLineitem.Text;
        string aging1 = txtAging.Text;  

知道为什么 AjaxFileUpload1_UploadComplete 无法读取文本框值

我的cs代码是:

    protected void AjaxFileUpload1_UploadComplete(object sender,     AjaxControlToolkit.AjaxFileUploadEventArgs e)
         {
   string c = System.IO.Path.GetFileName(e.FileName);
        string dpath = "~/Profile/Images/";
        string scn = txtSCN.Text;
        string line1 = txtLineitem.Text;
        string aging1 = txtAging.Text;             
        AjaxFileUpload1.SaveAs(MapPath(Path.Combine(dpath,c)));
        dpath = dpath + c;
        string str1 = ConfigurationManager.ConnectionStrings["ProTracConnGMCH"].ConnectionString;
        SqlConnection cn = new SqlConnection(str1);
        cn.Open();
        string sql = "Update tbNoquoteFollowupupdate set MailreceivedURL = '" + dpath + "', chkMailreceived = 1 , Buyername =  '" + buyername + "'  where scn = '" + scn + "' AND lineItem = '" + line1 + "' and Aging ='" + aging1 + "' ";
        SqlCommand cmd = new SqlCommand(sql, cn);
        int i = cmd.ExecuteNonQuery();

        if (i > 0)
        {
           // AjaxFileUpload1.SaveAs(Path.Combine(dpath, e.FileName));
            //AjaxFileUpload1.SaveAs(MapPath(dpath));
        }
        cn.Close();
        BindGridviewData1();
        cn.Open();
        string cmd2 = "Insert Into tbMulitmailsreived (scn, lineItem,followupdate, Aging,MailreceivedURL) Values ('" + scn + "', '" + line1 + "','" + DateTime.Now + "','" + aging1 + "','" + dpath + "')";
        SqlCommand sqlCommand2 = new SqlCommand(cmd2, cn);
        sqlCommand2.ExecuteNonQuery();
        cn.Close();
    }

请帮帮我

2 个答案:

答案 0 :(得分:1)

上周我花了一些时间调查这个question,但最终找不到一个简单的解决方案。该问题中的OP通过在会话中存储值来解决它,但为了使其工作,您仍然需要在某个阶段引发回发。

显然,AjaxFileUpload控件计划在Context Keys集合中传递值,但这绝不是implemented。这个question描述了如何自己实现它。

认为我看到围绕同一主题的另一个问题,OP通过更改为使用AsyncFileUpload控件来解决它,但我有待纠正...

答案 1 :(得分:0)

我认为你需要在你的代码中添加!Page.IsPostBack。像这样

protected void AjaxFileUpload1_UploadComplete(object sender,     AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
    if(!Page.IsPostBack)
    {
      string c = System.IO.Path.GetFileName(e.FileName);
      string dpath = "~/Profile/Images/";
      string scn = txtSCN.Text;
      string line1 = txtLineitem.Text;
      string aging1 = txtAging.Text;             
      AjaxFileUpload1.SaveAs(MapPath(Path.Combine(dpath,c)));
      dpath = dpath + c;
      string str1 =  ConfigurationManager.ConnectionStrings["ProTracConnGMCH"].ConnectionString;
      SqlConnection cn = new SqlConnection(str1);
      cn.Open();
      string sql = "Update tbNoquoteFollowupupdate set MailreceivedURL = '" + dpath + "', chkMailreceived = 1 , Buyername =  '" + buyername + "'  where scn = '" + scn + "' AND lineItem = '" + line1 + "' and Aging ='" + aging1 + "' ";
      SqlCommand cmd = new SqlCommand(sql, cn);
      int i = cmd.ExecuteNonQuery();

      if (i > 0)
      {
        // AjaxFileUpload1.SaveAs(Path.Combine(dpath, e.FileName));
        //AjaxFileUpload1.SaveAs(MapPath(dpath));
      }
      cn.Close();
      BindGridviewData1();
      cn.Open();
      string cmd2 = "Insert Into tbMulitmailsreived (scn, lineItem,followupdate,  Aging,MailreceivedURL) Values ('" + scn + "', '" + line1 + "','" + DateTime.Now + "','" +  aging1 + "','" + dpath + "')";
      SqlCommand sqlCommand2 = new SqlCommand(cmd2, cn);
      sqlCommand2.ExecuteNonQuery();
      cn.Close();
   }
}