在我的主窗体上,有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
设置SelectedItem
,SelectedText
,Text
和ComboBox
属性,无论如何都没有运气。
我做错了什么?
PS:Visual C#
我不是很好,但这是我的学校项目。如果您需要更多信息,请告诉我。
答案 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;
}
}
如果不是这样,请告诉我,将进一步帮助您。 再见,再见