应用程序的高级视图是:修改数据绑定组合框在运行时
- 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());
}
所以是你无法在Form2中设置正确的组合框值的问题的症结所在?你能发布你的Form2代码与你的组合框有关吗 – wdavo 2012-02-15 23:01:18
是的,问题的关键是我无法在Form2中的ComboBox上使用从Form1中引入的信息设置正确的案例类型。我发布了一些更多的代码,让我知道如果这有帮助,或者如果你需要特定的其他东西。 – ThiagoNSiq 2012-02-16 02:00:09
你可以添加MessageBox.Show(CaseTypeComboBox.Items.Count.ToString());在.Fill声明之后,让我知道它是什么。我怀疑它会是0,这意味着当你试图设置SelectedValue时,你的ComboBox尚未更新。 – wdavo 2012-02-16 02:29:36