我有一个DataGridView(DGV),它使用存储过程填充的数据表填充。 (所有数据库调用都正确返回了必需的数据)。然后,我将一个组合框列添加到DGV,该列应根据该行的股票代码提供一组批处理代码。 (另一个在StockCode中传递的存储过程调用)但是,每一行的所有组合框都填充了所有行的组合批处理代码。在此示例中,我尝试创建一个数据表数组以动态分配给DGV.Row,但这是相同的结果。我有点理解为什么它不起作用,但我不知道如何纠正它。 (我假设由于我没有具体定义当前组合框的单元格索引,而是将其数据源从数组中分配给数据表-只是覆盖它?所有帮助将不胜感激。
// fill the adapter with the executed cmd
adapter.Fill(dt);
//populate the gridview with the datatable
dgv_BOM.DataSource = dt;
dgv_BOM.AutoSize = true;
dgv_BOM.AutoResizeColumns();
dgv_BOM.Columns["StockCode"].DisplayIndex = 0;
dgv_BOM.Columns["Description"].DisplayIndex = 1;
dgv_BOM.RowHeadersVisible = false;
DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
cmb.HeaderText = "Select Batch Code";
cmb.Name = "cmb";
cmb.Width = 150;
dgv_BOM.Columns.Add(cmb);
DataTable[] dtArray = new DataTable[dgv_BOM.Rows.Count];
int count = 0;
foreach (DataGridViewRow row in dgv_BOM.Rows)
{
if (row.IsNewRow) continue;
stckcd = row.Cells["StockCode"].Value.ToString();
dtArray[count] = SP_RMBatchCodes(stckcd); //returns a datatable object
cmb.DataSource = dtArray[cnt];
cmb.DisplayMember = "BatchNo";
count++;
}
this.dgv_BOM.Columns["Traceable"].Visible = false;