首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算DataGrid中的单元格值

计算DataGrid中的单元格值
EN

Stack Overflow用户
提问于 2013-04-05 17:39:44
回答 2查看 3.5K关注 0票数 1

我有以下DataGrid (用罗马尼亚语写):

我想用这个公式计算列"Valoarea“:

valoarea = Cantitatea * Pret训研所(fara T.V.A.)

我的实际代码给出了错误:

代码语言:javascript
复制
private void produseFacturate_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        switch (e.ColumnIndex)
        {
            case 3:
                var row = produseFacturate.Rows[e.RowIndex];

                double qty, price;

                double.TryParse(row.Cells[2].Value.ToString(), out qty);
                double.TryParse(row.Cells[3].Value.ToString(), out price);

                row.Cells[4].Value = (qty * price).ToString();
                break;
        }
    }

现在,我的问题是:如何用良好的数据填充特定的单元格?

EN

回答 2

Stack Overflow用户

发布于 2013-04-05 18:06:19

我假设控件实际上是一个DataGridView?

您可以重写CellFormatting事件。下面是一个简单的例子:

我创建了一个包含3列的DataGridView。

代码语言:javascript
复制
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
        this.Column1,
        this.Column2,
        this.Column3});

this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.Size = new System.Drawing.Size(405, 150);
this.dataGridView1.TabIndex = 1;
this.dataGridView1.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dataGridView1_CellFormatting);

我想让第三栏成为前两列的乘积。下面是我重写单元格格式的方法。

代码语言:javascript
复制
 private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {

            if (this.dataGridView1.Columns[e.ColumnIndex].Name.Equals("Column3"))
            {
                try {
                    this.dataGridView1.Rows[e.RowIndex].Cells[2].Value =  Convert.ToInt32(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value) * Convert.ToInt32(this.dataGridView1.Rows[e.RowIndex].Cells[1].Value);
                }
                catch (Exception ex) { }
            }
        }

注意,每当我在前两列中更改一个值时,第3列就会重新计算。

票数 0
EN

Stack Overflow用户

发布于 2015-11-18 01:01:44

如果有人想知道如何在datagridview的单元格中计算值并将结果放在同一行的另一列上,那么在datagridview的CellEndEdit事件中,您可以尝试这样做:

代码语言:javascript
复制
 if (Convert.ToDecimal(datagridPR.CurrentRow.Cells["price_value"].Value) != 0)
        {
            decimal c_Quantity = Convert.ToDecimal(datagridPR.CurrentRow.Cells["quantity"].Value);
            decimal c_Result = c_Quantity * Convert.ToDecimal(datagridPR.CurrentRow.Cells["price_value"].Value);
            datagridPR.CurrentRow.Cells["amount"].Value = c_Result;
        }

每次编辑后按enter或离开单元格时,计算结果都会立即显示在“金额”列中。您可以扩展代码以处理空值,以避免运行时错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15840113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档