2013-04-16 29 views
0

我在處理一些看起來很直接的事情時遇到了一些麻煩,但在提交變更時需要一些幫助來確定我要出錯的地方。 這個窗體的基本前提是查詢數據庫中表單負載的特定信息,然後將其加載以進行需要做的任何更改。Linq to SQL - 在表單中加載數據然後保存

它加載得很好,我仔細檢查,以確保主鍵在那裏(這是),但由於某種原因,它不會保存。 tkts.Log = Console.Out;在點擊保存按鈕時甚至不顯示任何內容。我是一名初學者程序員,並且正在嘗試將Linq轉換爲SQL,因此如果有某些事情需要解決,請提供指針。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using TicketLogger; 


namespace TicketLogger 
{ 
    public partial class TicketInfo : Form 
    { 
     ITDataClassesDataContext tkts = new ITDataClassesDataContext(); 
     private Int32 ticket_id = 0; 

     public TicketInfo(Int32 TicketID = 0) 
     { 
      InitializeComponent(); 
      //Set local TicketID variable for use on load 
      ticket_id = TicketID; 
     } 

     private void tBL_TICKET_HDRBindingNavigatorSaveItem_Click(object sender, EventArgs e) 
     { 
      //Save the new ticket to the database 
      //I think the object Tickets contains the changes, not tkts, but how to access? 
       try 
       { 
        tkts.Log = Console.Out; 
        tkts.SubmitChanges(); 
        tkts.Log.Close(); 
       } 
       catch (Exception m) 
       { 
        MessageBox.Show(m.ToString()); 
       } 
     } 

     private void TicketInfo_Load(object sender, EventArgs e) 
     { 

      tkts.Log = Console.Out; 
      //Get the ticket ID and retrieve information 
      var Ticket = from objTkts in tkts.TBL_TICKET_HDRs 
         where objTkts.TICKET_ID == ticket_id 
         select objTkts; 
      this.tBL_TICKET_HDRBindingSource.DataSource = Ticket; 
      tkts.Log.Close(); 

     } 
    } 
} 
+0

您是否試圖在Console.Out中顯示您的LiNQ查詢的結果? – Brian

+0

如果數據庫中沒有任何變化,我會懷疑你的數據綁定設置不正確 - 嘗試使用一個普通的舊對象進行綁定,並在Save方法中設置一個斷點來驗證。此外,你應該做的數據加載/保存在一個單獨的線程,如:Task.Factory.StartNew(()=> {codegoeshere}); –

+0

Brian - 是的,在try/catch塊中,我試圖看看發生了什麼 - 它從不顯示任何內容,所以我的猜測是它認爲沒有任何更新。我想知道這是否是加載時使用的變體Ticket的問題,但我在嘗試保存時從不訪問它。不知道這是否有效。 – Jeffro

回答

0

我發現它爲什麼不會更新。我從來沒有將任何數據傳遞給它。 在提交更改之前,我在try塊中添加了這段代碼,並且它將其佔用。

  TBL_TICKET_HDR tkthdr = tkts.TBL_TICKET_HDRs.Single(t => t.TICKET_ID == ticket_id); 
      tkthdr.ISSUE_DESC = iSSUE_DESCTextBox.Text; 

出於某種原因,我只是希望的代碼爲「知道」窗體上的控件是它應該去看看。