2011-03-21 58 views
0

我有一個問題,我想你的幫助。我在我的頁面中有一個編輯按鈕和文本框。我想從數據庫中編輯一條記錄到這些文本框。我編寫了下面的代碼,當我點擊編輯按鈕時,我得到了結果。結果加載到我的文本框中。但是當我再次嘗試第二次運行具有相同ID的頁面時,則出現此錯誤「指定的轉換無效」。出了什麼問題?我用int ID = 3;以獲得第三記錄在該示例如何使用文本框從數據庫編輯/更新記錄?

保護無效Button2_Click(對象發件人,EventArgs的)

{

DataClassesDataContext CXT =新DataClassesDataContext(); USER_TABLE aChar = cxt.USER_TABLEs.Single(c => c.ID == 3); //獲取單個記錄

  fname2.Text = aChar.FIRST_NAME; 
      lname2.Text = aChar.LAST_NAME; 
      pob2.Text = aChar.PLACE_OF_BIRTH; 
      pom2.Text = aChar.PLACE_OF_MARRIAGE; 
      education2.Text = aChar.EDUCATION; 
      occupation2.Text = aChar.OCCUPATION; 
      pod2.Text = aChar.PLACE_OF_DEATH; 
      String str = aChar.DATE_OF_BIRTH.ToString(); 
      String str1 = aChar.DATE_OF_MARRIAGE.ToString(); 
      String str2 = aChar.DATE_OF_DEATH.ToString(); 
+0

你的問題與LINQ沒有任何關係。我會編輯你的問題。 – 2011-03-21 09:52:21

+0

斯蒂芬 - 他正在使用Linq-to-sql - 所以也許刪除sql和linq並將linq-to-sql放入? – Stuart 2011-03-21 09:56:05

+0

您確實有一個LINQ調用(.Single),但它顯然不會導致問題,因爲您的站點在異常時沒有失敗(如果該LINQ調用失敗,Single將引發異常) - 否則您將看到一個錯誤輸出,而不是相同的頁面。 – 2011-03-21 09:57:23

回答

0

你爲什麼這樣做在事件處理代碼if (!Page.IsPostBack)

我會說,正常的事件時回後,纔會引發...

我很少看到比pageLoad的任何其他的IsPostBack使用。

+0

ok!我刪除了if(!Page.IsPostBack)。再次,我有相同的頁面沒有結果。什麼都沒有!問題出在ID身上。出於這個代碼無法獲得的原因。 – dali1985 2011-03-21 09:53:54

+0

首先,你應該修改你的問題。其次,您設置ID = 3,然後立即用傳入請求的ID覆蓋它。如果與您的URL一起傳遞的ID參數不是有效的數字,則TryParse將失敗,您將無法獲得任何內容。 – 2011-03-21 09:59:52

+0

謝謝史蒂芬的評論!那麼你認爲我可以改變以獲得第三個ID的記錄? – dali1985 2011-03-21 10:09:43

0

您需要更改明確地保存上下文

​​
+0

你的意思是我必須將這個上下文添加到我的代碼中?因爲我的UPDATE按鈕中有這個上下文 – dali1985 2011-03-21 10:07:04

+0

將它添加爲最後一行 - 如果你不叫它,那麼你贏了不更新數據庫。請參閱http://www.richardbushnell.net/2008/02/18/how-to-update-data-with-linq-to-sql/中的示例 - 獲取數據,更新數據,提交更改 – Stuart 2011-03-21 10:11:20

0

看來,你取你的對象(使用單)時,得到一個指定的轉換異常。您可能希望檢查對象模型和數據庫之間的數據類型,以確保該對象在數據庫使用字符串的位置不需要數字(反之亦然)。另外,請檢查對象和數據庫列的可空性。綁定時,LINQ to SQL不支持隱式類型轉換。

至於爲什麼它正在處理第一個請求,而不是第二個,請求之間發生了什麼變化?此外,這兩個請求之間的上下文是否保持活躍?當第二次請求相同的ID時,單緩存所提取的值並使查詢管道短路,因此對於Single,如果環境保持活動狀態,則只應看到一個數據庫請求。嘗試使用ctx.Log = Console.Out記錄數據庫請求,或者使用SQL Profiler(如果有)。

相關問題