【问题标题】:Multiplying data in 2 datagridview columns将 2 个 datagridview 列中的数据相乘
【发布时间】:2013-07-20 14:58:11
【问题描述】:

我一直在互联网上寻找一些有用的指南,但我发现非 - 我如何将两个数字连续多个,记住该值,然后对 datagridview 中的其余行执行相同操作,所有这些值总和一起。总摘要显示在textbox。这两列使用 SqlCommand 显示。但是我想每次在pocet datagridview 列中发生更改时更改textbox 中的值(当我在datagridview 中进行更改时,它不会将值插入SQL)。所以我没有犹豫,我在上一个问题here 和用户 varocarbas 中问过你——我非常感谢他花时间制作它。

他想出了这个代码:

 void calculateProductTwoColumns(int castkaIndex, int pocetIndex, int tot_rows)
    {
        try
        {
            double[] outVals = new double[tot_rows + 1]; 
            int curRow = 0;
            foreach (DataGridViewRow row in dtg_ksluzby.Rows)
            {
                curRow = curRow + 1;
                outVals[curRow] = (double)row.Cells[castkaIndex].Value * (double)row.Cells[pocetIndex].Value;

                kpriplac.Text = outVals.ToString();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("" + ex.Message.ToString());
        }


    }

所以我尝试“改进”它以使其按我的意愿工作,但我认为我没有把它搞砸。我想在每一行列中相乘 pocet(dgv index 3) 和 cena(dgv index 2)。所以我这样称呼这个方法:

  calculateProductTwoColumns(2, 3, 4);

当我开始调试时,它显示:Specified cast is not valid. 我试图用断点调试它,但我找不到出错的地方。

pocet 是 int,castka 是 numeric numeric(15, 2)

非常感谢您抽出宝贵时间阅读本文,我会很高兴收到任何评论或对指南的参考。

【问题讨论】:

  • DataGridView 是数据绑定还是手动添加行?
  • @SriramSakthivel 与 SqlCommand,感谢您抽出宝贵时间。
  • 找不到你。使用数据源?
  • 你使用datagridview.DataSource = datatable吗?

标签: c# sql sql-server math datagridview


【解决方案1】:

尝试如下更改您的来源:

outVals[curRow] = Convert.ToDouble(row.Cells[castkaIndex].Value) * Convert.ToDouble(row.Cells[pocetIndex].Value);

编辑:

我会推荐这样的东西:

void calculateProductTwoColumns(int castkaIndex, int pocetIndex, int tot_rows)
    {
        try
        {
            double outVal = 0; 
            foreach (DataGridViewRow row in dtg_ksluzby.Rows)
            {
                outVal = outVal + Convert.ToDouble(row.Cells[castkaIndex].Value) * Convert.ToDouble(row.Cells[pocetIndex].Value);
            }

            kpriplac.Text = outVal.ToString();
        }
        catch (Exception ex)
        {
            MessageBox.Show("" + ex.Message.ToString());
        }


    }

【讨论】:

  • 你好,谢谢你的回答,至少这段代码在文本框中显示了一些东西! - System.Double[]。它给出了错误 - 索引超出了数组的范围,你认为我在哪里犯了错误?
  • 我已经编辑了我的答案。您的代码中的问题是,您将整个数组转换为字符串。这导致只给你类型名称。此外,您不需要数组,因为您只是将所有内容汇总为一个值。
  • 非常感谢您的宝贵时间。
猜你喜欢
  • 2013-09-10
  • 1970-01-01
  • 2019-02-28
  • 2021-09-15
  • 1970-01-01
  • 2019-07-02
  • 2020-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多