2012-02-15 20 views
3

應用程序的高級視圖是:修改數據綁定組合框在運行時

  • Form1中顯示在一個DataGridView客戶機信息(從DB拉動)。
  • 我從位於客戶端類的屬性中的DataGridView中保存客戶端的信息。
  • 從Form1中,用戶可以單擊實例化Form2的按鈕,並允許修改客戶端的信息。
  • Form2的構造函數有一個Client對象作爲參數。該對象是保存來自Form1的所有客戶端信息的東西。使用這個對象,我可以重新填充我希望用戶能夠在Form2上編輯的字段。

有在保持所有的情況下類型(即CaseType1,CaseType2,CaseType3)的數據源的表。

然後,我使用ComboBox並在實例化窗體時使用來自DataSource的所有案例類型填充它。我的組合框設置如下:

DataSource:設置爲我的CaseTypeBindingSource,它具有我需要的列和數據。 DisplayMember:正在使用的查詢結果。 ValueMember:正在使用的查詢結果。 (與DisplayMember相同) SelectedValue:我嘗試過使用「none」,並使用與DisplayMember和ValueMember相同的值。

這裏的問題:

在運行時,我希望能夠來指派被帶到了從Form1中作爲當前的組合框(的SelectedItem)選擇的項目客戶的案件類型。

我只能將案例類型分配給文本框並完成它。但想法是,我希望表單向用戶顯示客戶的案例類型,並允許他/她通過使用ComboBox來更改它。

ComboBox名稱是CaseTypeComboBox。持有案例類型信息及其屬性的對象是client.CaseType。

我試過在構造函數中執行以下操作:

CaseTypeComboBox.SelectedItem = client.CaseType; 

我也嘗試創建一個類變量在Form2的叫origCaseType,分配client.CaseType值在構造函數中origCaseType類變量。然後在Form2_Load(...)事件觸發時執行以下操作:

CaseTypeComboBox.SelectedValue = origCaseType; 

有沒有人對此有任何想法?任何類似的經歷?

請讓我知道,如果有什麼需要澄清,任何幫助表示讚賞。

在此先感謝!

TS

「窗體2」 構造:

public ModifyCase(Client client) 
{ 
    InitializeComponent(); 
    CaseNumberTextBox.Text = client.CaseNumber; 
    LoadStatusComboBox(client.Status); 
    LoadIsClosedRadioButton(client.IsClosed); 
    LoadIsInStorageRadioButton(client.IsInStorage); 
    LastModifiedTextBox.Text = client.LastModified.ToString(); 
    NotesTextBox.Text = client.Notes; 

    origCaseType = client.CaseType; 
} 

「窗體2」 Load事件:

private void ModifyCase_Load(object sender, EventArgs e) 
{ 
    //Fills the ComboBox box with case types 
    this.case_typesTableAdapter1.Fill(this.testDataSet1.case_types); 

    //Attempts to set value for client's case type from Form1 
    CaseTypeComboBox.SelectedValue = origCaseType; 
    //Just to help me see what these variables are holding to figure 
    //out the problem... 
    MessageBox.Show(origCaseType); 
    MessageBox.Show(CaseTypeComboBox.SelectedIndex.ToString()); 
} 
+0

所以是你無法在Form2中設置正確的組合框值的問題的癥結所在?你能發佈你的Form2代碼與你的組合框有關嗎 – wdavo 2012-02-15 23:01:18

+0

是的,問題的關鍵是我無法在Form2中的ComboBox上使用從Form1中引入的信息設置正確的案例類型。我發佈了一些更多的代碼,讓我知道如果這有幫助,或者如果你需要特定的其他東西。 – ThiagoNSiq 2012-02-16 02:00:09

+0

你可以添加MessageBox.Show(CaseTypeComboBox.Items.Count.ToString());在.Fill聲​​明之後,讓我知道它是什麼。我懷疑它會是0,這意味着當你試圖設置SelectedValue時,你的ComboBox尚未更新。 – wdavo 2012-02-16 02:29:36

回答

0

我做了的伎倆兩個小調整!問題是我已將SelectedItem和SelectedValue設置爲我正在使用的DataSource列。除此之外,所有需要的是將這兩個值設置爲「none」,並將ValueMember和DisplayMember設置爲DataSource列。感謝您的時間wdavo!