如何以编程方式将Cell添加到DataGridView?

时间:2015-02-25 12:38:54

标签: c# datagridview cell

我想为每个创建的列添加一个额外的单元格,其值来自每行中的单元格。我有这个代码,但不起作用:

i = 0;

                Double X1 = Convert.ToDouble(DGV_Points.Rows[i].Cells[6].Value);
                Double X2 = Convert.ToDouble(DGV_Points.Rows[i++].Cells[6].Value);

                Double LapLength = X1 - X1;

                this.DGV_Points.Rows.Add();
                this.DGV_Points.Rows[0].Cells[1].Value = LapLength;
                this.DGV_Points.Rows[1].Cells[1].Value = LapLength;

我也试过这个例子:

 foreach (var item in _model.SelectedItems)
            {
                var row = new DataGridViewRow();
                var codeCell = new DataGridViewComboBoxCell();
                codeCell.Items.AddRange(ItemCode.Items);
                codeCell.Value = ItemCode.Items.GetListItem(item.Code);
                var nameCell = new DataGridViewComboBoxCell();
                nameCell.Items.AddRange(ItemName.Items);
                nameCell.Value = ItemName.Items.GetListItem(item.Name);
                row.Cells.Add(new DataGridViewTextBoxCell { Value = item.Id });
                row.Cells.Add(codeCell);
                row.Cells.Add(nameCell);
                row.Cells.Add(new DataGridViewTextBoxCell { Value = item.Units });
                row.Cells.Add(new DataGridViewTextBoxCell { Value = item.Quantity });
                row.Cells.Add(new DataGridViewTextBoxCell { Value = item.PriceLt });
                row.Cells.Add(new DataGridViewTextBoxCell { Value = item.PriceEu });
                itemView.Rows.Add(row);
            }

但它也不起作用。

有人有任何建议吗?

2 个答案:

答案 0 :(得分:1)

两种方式:

  • 您首先需要Column,然后您可以使用您要创建的Cell类型替换Column中的任何Cell

DataGridViewTextBoxColumn normalColumn = new DataGridViewTextBoxColumn();
DGV_Points.Columns.Insert(yourColumnIndex, normalColumn);
DGV_Points.Rows.Add(11);  // we need at least one row where we can insert a cell
DataGridViewComboBoxCell aCell = new DataGridViewComboBoxCell();
DGV_Points.Rows[someRowIndex].Cells[yourColumnIndex] = aCell;
  • 或者您创建了Column以获得所需的ColumnType,而Cells中的所有Column将从一开始就拥有正确的Type:< / LI>

DataGridViewComboBoxColumn comboCol = new DataGridViewComboBoxColumn();
comboCol.HeaderText = "yourHeaderText";
DGV_Points.Columns.Insert(yourColumnIndex, comboCol);

请注意,第一种方法只创建了DataGridViewComboBoxCells {}},而第二种方法立即在每个DataGridViewComboBoxCell中创建Row。由你决定你想要什么......

相反或Inserting在给定位置,您可能只想Add ColumnAdd方法会返回新Index的{​​{1}}。

由于我们正在添加Column,因此您可以在此处填写新下拉列表的DataGridViewComboBoxCells示例:

Items

这将使用五个字符串值填充第2行第0列中单元格的下拉列表,并选择值为&#34; 222&#34;。请注意,通过这种方式,您必须填写每个List<string> items1 = new List<string> (){ "111", "222", "333", "444", "555" }; ((DataGridViewComboBoxCell)DGV_Points.Rows[2].Cells[0] ).Items .AddRange(items1.ToArray()); DGV_Points.Rows[2].Cells[0].Value = "222"; 的{​​{1}},然后您可以使用不同的值列表填充每个{。}}。

您还可以设置个人ItemsCell,也可以为Cell's DataSource设置aCell.DataSource = items1;

答案 1 :(得分:0)

您可以尝试这样:

DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells[0].Value = "XYZ";
row.Cells[1].Value = 50.2;
yourDataGridView.Rows.Add(row);

OR

DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells["Column2"].Value = "XYZ";
row.Cells["Column6"].Value = 50.2;
yourDataGridView.Rows.Add(row);