2011-05-28 85 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

相關問題