选择ComboBox中的项目,即数据绑定

时间:2011-05-28 17:38:09

标签: c# winforms

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

这是我的问题: 当我尝试在该编辑表单上设置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是我的编辑表单。 我尝试在SelectedValue设置SelectedItemSelectedTextTextComboBox属性,无论如何都没有运气。

我做错了什么?

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

4 个答案:

答案 0 :(得分:1)

将您的ComboBox数据绑定移动到表单的构造函数中,而不是像当前那样将其保存在Form.Load中。确保在对构造函数中的InitializeComponent进行调用后绑定

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

答案 1 :(得分:1)

在显示表单后发生数据绑定 因此,当您设置所选值时,组合框的数据源中没有任何内容 在设置所选值

之前设置组合框的数据源

答案 2 :(得分:0)

我也不擅长Visual C#。但你是否在fDodaj的Form_Load中尝试了这个。对我而言,此时看起来组合可能尚未初始化。

答案 3 :(得分: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;
        }
    }

如果不是这样,请告诉我,将进一步帮助您。 再见,再见