2011-02-28 59 views
0

我建立的一個具有左側列表框形式,並在數據源的每個字段右邊一堆文本字段將數據添加到字段。C#需要時記錄被觸摸

當用戶點擊左側移動到該記錄,使他們能夠修改右邊的字段中輸入。到目前爲止,所有的作品都很好。

的問題是,每個用戶都有一個唯一的ID號,一旦他們在唱片領域開始打字我要填充的隱藏字段用自己的ID號,所以當他們保存,我知道誰碰這個紀錄。

我無法找到一個合適的事件來處理此方法。我沒有使用數據網格,我只是簡單地將數據源窗口中的成員拖到窗體上。 CurrentChanged和CurrentItemChanged在列表框中的項目之間切換時觸發,因此這些不反映我需要的行爲。

有什麼想法?

+0

這看起來像2個不同的問題或單獨的問題。前三段讓我認爲不同的用戶會在沒有登錄的情況下使用相同的應用程序?最後一段看起來更像是你需要知道左側選擇了哪個用戶?在'currentItemChanged'觸發之前保存更改? – Maslow 2011-02-28 16:17:31

+0

他們正在登錄,並且一旦身份驗證發生,該ID就存儲在單例對象中。一旦用戶點擊左側的對象並開始鍵入右側的任何字段,就需要填充userID字段。由於他們可以從列表框中選擇多個記錄,並在保存之前編輯它們中的任何一個和所有記錄,因此我需要在保存之前觸摸它們與他們的ID接觸的每條記錄。 – Mohgeroth 2011-02-28 16:19:22

+0

可以通過Microsoft Access WinForms事件Before_Update給出行爲的示例,一旦觸摸了任何字段,此事件在發生任何事情之前觸發。 – Mohgeroth 2011-02-28 16:22:57

回答

0

我覺得這是一個有點醜陋的答案,但沒有得到任何重大的重大努力完成任務。一旦所有內容都已經過驗證,並且已經調用了綁定源EndEdit函數,則可以檢查DataSet是否有更改的行。

Before_Update處理這個邏輯,並期待在每行,如果已經作了修改,要求UpdateAll拍前到列必要的修改。

檢查更改的行 - http://msdn.microsoft.com/en-US/library/czb9z269%28v=VS.80%29.aspx

// Save event 
    private void clientBindingNavigatorSaveItem_Click(object sender, EventArgs e) 
    { 
     this.Validate(); 
     this.clientBindingSource.EndEdit(); 

     Before_Update(); 

     this.tableAdapterManager.UpdateAll(this.dP_TestDataSet); 
    } 

    // Place logic in here to modify records if they are changed 
    private void Before_Update() 
    { 
     if (dP_TestDataSet.HasChanges()) 
     { 
      for (int tRow = 0; tRow < dP_TestDataSet.Tables["Client"].Rows.Count; tRow++) 
      { 
       // Modification Logic 
       if (dP_TestDataSet.Tables["Client"].Rows[tRow].RowState == DataRowState.Modified) 
       { 
        dP_TestDataSet.Tables["Client"].Rows[tRow]["userID"] = Program.SYSNG.UserID; 
       } 

       // Addition Logic 
       if (dP_TestDataSet.Tables["Client"].Rows[tRow].RowState == DataRowState.Added) 
       { 
        // Addition Logic 
        // ... 
       } 
       // Other RowStates such as Deleted, Detatched or Unchanged work here too 
      } 
     } 
    } 

這雖然我希望有人走來勝過這個答案很好地解決了我的問題。我覺得我正在做額外的工作,該框架已隱藏在我的工作表下的某個地方,並希望有人能夠爲我提供有關此功能的見解。

+0

如果我正在使用datagrid視圖,則可以在DefaultValuesNeeded事件期間存儲信息。然而,在這種特殊情況下,這是一種主/細節方法,所以我沒有這種方法可以解決 – Mohgeroth 2011-03-10 15:25:01