c# - 在 DataGridView 中动态填充 ComboBox 列
问题描述
我有一个 DataGridView (DGV),它使用由存储过程填充的数据表填充。(所有数据库调用都正确返回了必要的数据)。然后,我向 DGV 添加了一个组合框列,该列应提供基于该行股票代码的批处理代码选择。(在 StockCode 中传递的另一个存储过程调用)但是,每一行上的所有组合框都填充了所有行的组合批处理代码。在此示例中,我尝试创建一个数据表数组以动态分配给 DGV.Row,但结果相同。我有点理解为什么它不起作用,但我不知道如何纠正它。(我假设因为我没有专门定义当前组合框的单元格索引并分配它' s 数据源到数组中的数据表 - 它只是覆盖它?任何帮助将不胜感激。
// 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;
解决方案
推荐阅读
- sql - 在 SQL 查询中尝试/捕获多个联合
- image - 在八度音阶的 ylabel 中打印带下标的绘图时间距没有错
- sql - SQL 将 varchar 转换为日期
- qt - qmake没有蓝牙
- javascript - 反应:WEBPACK:构建到 PROD,在 SourceMap 中显示本地机器路径
- azure - 如何将自定义域名与 Azure ARM 模板部署绑定
- angular - 将角料片添加到输入框
- c# - 反序列化从 Azure 表中检索到的 DynamicTableEntity
- java - 使java输出特定数量的字符,具体取决于控制台中的输入
- vba - 如何从 VBA 中的 WSDL GET 函数返回特定数据