在组合框中选择一个数据绑定的项目
本文关键字:一个 数据绑定 项目 组合 选择 | 更新日期: 2023-09-27 17:57:49
在我的主窗体上,有dataGridView1
,它绑定到一个数据库表。在我的编辑表单上,有一个ComboBox
,它通过与dataGridView1
来自同一数据库的列的数据绑定来获取它的项。双击dataGridView1
单元格时,该编辑表单将打开并填充编辑该行所需的所有字段。
这是我的问题:当我尝试在该编辑表单上设置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
上设置SelectedValue
、SelectedItem
、SelectedText
和Text
属性,但无论如何都没有成功。
我做错了什么?
附言:我不太喜欢Visual C#
,但这是我学校的项目。如果你需要更多信息,请告诉我。
将ComboBox数据绑定移动到表单的构造函数中,而不是将其保留在form.Load中。确保在构造函数中对InitializeComponent
的调用之后绑定。
这将允许您在显示对话框之前设置ComboBox SelectedValue或类似值。
在显示表单后发生数据绑定因此,当您设置所选值时,组合框的数据源中没有任何内容在设置所选值之前设置组合框的数据源
我也不擅长Visual C#。但是你在fDodaj的Form_Load中尝试过这个吗。在我看来,这个组合可能还没有初始化。
首先,公开控制不是一个好的做法,因此您可以通过表单(或类)访问它们,就像您在示例中所做的那样:nov.comboBox1.文本将它们私有化并将值(数据)传递给它们总是很好的。这就是你应该做的:
//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;
}
}
如果不是这样,请告诉我,这将进一步帮助你。再见,再见