2012-02-15 50 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!