我想要实现这样一个功能:
当用户每一次点击保存按钮就将此配方(设备的运转条件)以时间分类保存到数据库,每一行是对应一个配方名,且这个配方名下面有很多个时间点保存的配方
例如选中第一行点了一次保存就将当前时间添加到这一行的下拉框,同时与其对应的编号和配方提交到数据库
现在的问题:我想要的是每行单元格的下拉框的时间都是独立的,和编号是对应的,但是现在实际运行效果却是每行都一样的时间,下拉框数据绑定是不是有问题,问题在哪里,应该怎么样实现这个功能?
private void Form1_Load(object sender, EventArgs e)
{
// 添加DataGridViewComboBoxColumn
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
column.Name = "TimeColumn";
column.HeaderText = "时间";
dataGridView1.Columns.Add(column);
// 绑定数据源
string[] times = new string[] { "9:00", "10:00", "11:00", "12:00", "13:00", "14:00" };
column.DataSource = times;
// 添加数据行
dataGridView1.Rows.Add("1", "配方1", times[0]);
dataGridView1.Rows.Add("2", "配方2", times[1]);
}
private void btnSave_Click(object sender, EventArgs e)
{
// 保存数据到数据库
foreach (DataGridViewRow row in dataGridView1.Rows)
{
string id = row.Cells["IdColumn"].Value.ToString();
string formula = row.Cells["FormulaColumn"].Value.ToString();
string time = row.Cells["TimeColumn"].Value.ToString();
// 保存到数据库
//...
}
}
我的建议是,你可以把所有时间点和对应 id 都读到一个 DataTable 里,然后对下拉框绑定数据时,对这个DataTable 进行一次 id 的 select 筛选,得到新的DataTable 作为绑定数据源
我不明白,控件dataGridView每一行都有一个下拉框,而DataGridViewComboBoxColumn.DataSource只有一个,我绑定了之后,每行的下拉框的数据都一样了,该怎么办?