繁体   English   中英

在 ComboBox 中选择一个项目,它是数据绑定的

[英]Selecting an item in ComboBox, which is Data bound

在我的主窗体上,有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是我的编辑表格。 我尝试在ComboBox上设置SelectedValueSelectedItemSelectedTextText属性,无论如何都没有运气。

我究竟做错了什么?

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

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

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

数据绑定发生在显示的表格之后,因此当您设置所选值时,combobox 的数据源中没有任何内容 在设置所选值之前设置 combobox 的数据源

我也不擅长 Visual C#。 但是你有没有在 fDodaj 的 Form_Load 中尝试过这个。 在我看来,此时组合可能尚未初始化。

首先,公开控制不是一个好习惯,因此您可以通过 forms (或类)访问它们,就像您在示例中所做的那样: 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;
        }
    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM