2011-05-28 82 views
0

在我的主窗体上,有dataGridView1,它绑定到数据库表。在我的编辑表单中,有一个ComboBox,它通过数据绑定将它的项目从dataGridView1的同一数据库中获取到该列。在dataGridView1单元格双击,编辑窗体打开并填充编辑该特定线路所需的所有字段。在ComboBox中选择一个数据绑定的项目

这是我的问题: 当我尝试在该编辑窗体上设置ComboBox的值时,没有任何反应。没有给出错误,并且未选择ComboBox中的项目。

fDodaj nov = new fDodaj(); 
nov.comboBox1.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[4].Value.ToString(); 
if(nov.ShowDialog()==DialogResult.OK) 
{ 
//code that updates the value in database 
} 

fDodaj是我的编辑形式。 我试过设置SelectedValueSelectedItem,SelectedTextText属性ComboBox,在任何情况下都没有运气。

我在做什么错?

PS:我不是很喜欢Visual C#,但这是我的学校项目。如果您需要更多信息,请告诉我。

+0

在什么时候将数据绑定到ComboBox?提前设置ComboBox文本(即在绑定CB之前)很可能是这里的问题。 – 2011-05-28 17:46:12

+0

数据绑定在'fDodaj_Load'上。我尝试将'nov.combobox1.text = ...'(和SelectedValue,SelectedItem和SelectedText)放入if语句中,但仍然没有运气。 – 2011-05-28 17:58:07

+0

在上面设置'ComboBox1.Text'时,ComboBox将不会被绑定,因为在ShowDialog'调用中准备显示对话框时会发生绑定。 – 2011-05-28 18:01:31

回答

1

将您的ComboBox数据绑定移动到窗体的构造函数中,而不是像当前那样将其保存在Form.Load中。在你的构造函数中调用InitializeComponent之后,确保它在之后绑定

这将允许您在显示对话框之前设置ComboBox SelectedValue或类似。

+0

非常感谢,你救了我一命:) – 2011-05-28 18:30:26

+0

拯救了你的生命?你现在是我的了! :)享受你的编码! – 2011-05-28 18:32:32

0

我不擅长Visual C#。但是你是否在fDodaj的Form_Load中尝试了这个。对我来说,这看起来组合可能不会被初始化。

1

数据绑定后的形式显示 所以,当你正在设置选择的值是没有在组合框中 设置组合框的数据源的数据源设置中选择值

0

首先,之前发生,它不是一个很好的做法,使控制公开,所以你可以访问他们的形式(或类),就像你在你的例子中所做的那样: nov.comboBox1.Text 它总是很好,让他们私人,并传递值) 给他们。这是你应该怎么做:

//form1 
    public partial class Form1 : Form 
    { 
     DataTable table; 
     public Form1() 
     { 
      InitializeComponent(); 
      table = new DataTable("myTable"); 
      table.Columns.Add("column 1", typeof(string)); 

      //some example data: 
      table.Rows.Add("a"); 
      table.Rows.Add("b"); 
      table.Rows.Add("c"); 
      dataGridView1.DataSource = table; 

      dataGridView1.CellDoubleClick += new DataGridViewCellEventHandler(dataGridView1_CellDoubleClick); 
     } 

     private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
     { 
      string _value = dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString(); 
      if (_value != String.Empty) 
      { 
       using (Form2 f2 = new Form2(_value)) 
       { 
        if (f2.ShowDialog() == DialogResult.OK) 
        { 

        } 
       } 
      } 
     } 
    } 

//form2: 
    public partial class Form2 : Form 
    { 
     public Form2(string value) 
     { 
      InitializeComponent(); 
      //some example data in the comboBox: 
      comboBox1.Items.AddRange(new string[] { "a", "b", "c" }); 

      //lets select the item which came from form1: 
      comboBox1.SelectedItem = value; 
     } 
    } 

如果这不是,请让我知道,会进一步帮助你。 bye,bye

相关问题