2014-02-18 15 views
0

我在AjaxFileUpload1的pageupload事件期間從頁面上的文本框中爲變量賦值。問題是,我沒有從文本中獲取值框,我的變量,即使沒有錯誤throws.My變量如何從Ajaxfileupolad控件讀取文本框的值

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(); 
} 
+1

我會建議您閱讀[參數化SQL](http://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or-give-me-death.html) – Wahtever

+0

您無法檢索文本框的值,因爲它是一個「部分後回」和母雞ce'ViewState'將不可用於控件。您可以使用會話來獲取早期回傳中的文本框值。 – NaveenBhat

回答

1

請將文本框中的值放入會話中,並且由於您可以通過UpLoadComplete訪問會話變量,因此所有內容都將以這種方式工作。

+0

當我給會話變量錯誤時說:在當前上下文中不存在名稱'變量' – FaisalThayyil

+0

嘗試使用字符串var = HttpContext.Current.Session [「variable」]。ToString(); –

+0

也看看這個鏈接

0

您可以自定義AjaxFileUpload控制,並通過文本框值如下UploadCompleted事件處理程序:

function uploadStarted(sender, args) { 
    var latitude = $get("<%= tbUploaderLat.ClientID %>").value; 
    var longitude = $get("<%= tbUploaderLon.ClientID %>").value; 
    sender.contextKeys = { "latitude": latitude, "longitude": longitude }; 
}​ 

之後,你就可以在UploadComplete處理得到緯度&經度值:

protected void AjaxFileUpload1_OnUploadComplete(object sender, AjaxFileUploadEventArgs file) 
    { 
     if (!string.IsNullOrEmpty(file.ContextKeys)) 
     { 
      var longLat = new  System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Dictionary<string, string>>(file.ContextKeys); 
      var longitude = longLat["longitude"]; 
      var latitude = longLat["latitude"]; 
     } 

     //code to save file 

    }