Динамическое заполнение столбца ComboBox в DataGridView - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...