【发布时间】:2013-03-19 19:16:39
【问题描述】:
我有一个从 XML 文件创建的数据集填充的 Datagridview。这部分有效,我可以让数据集的全部内容显示在数据网格中。我添加了根据日期和已售标志过滤 datagridview 的功能。当您循环浏览日期时,这也可以正常工作,因为 datagridview 会更新。但是我需要对“过滤”的数据网格视图进行一些计算。这些计算需要将各种货币转换为英镑。因此,在对最好的方法进行了一些研究之后,我决定遍历可见的 datagridview 并测试每个可见的。这是我想出的代码。不幸的是,当运行它时,所有测试都失败了,它尝试执行 else 子句,然后失败并出现“输入字符串格式不正确”异常。但是,我认为这不是问题,因为我关注价格和货币值,它们“在当前上下文中不存在”……现在我被卡住了,希望能得到一些帮助。也许我走错了路……
谢谢
哈利
for (int i = 1; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1["currency", i].ToString() == "USD")
{
myCommission += double.Parse(dataGridView1["commission", i].ToString()) * (double.Parse(dataGridView1["price", i].ToString()) * UStoGB);
}
else if (dataGridView1["currency", i].ToString() == "EURO")
{
myCommission += double.Parse(dataGridView1["commission", i].ToString()) * (double.Parse(dataGridView1["price", i].ToString()) * EUtoGB);
}
else
{
myCommission += double.Parse(dataGridView1["commission", i].ToString()) * double.Parse(dataGridView1["price", i].ToString());
}
}
【问题讨论】:
-
我最初尝试在数据源上执行它们,但无法弄清楚如何仅操作过滤后的数据而不是数据源中的所有数据。目前仍在努力编程,所以还有很多东西要学……谢谢你的指点。
-
使用 DataTable.DefaulView,它假设是您的过滤结果并进行计算,例如 DataTable.DefaultView.ToTable().Compute(SUM(IIF(currency = 'USD', Commission * price * whatewer, IIF(currency = 'EURO', 佣金 * price * whatewer2)))) 等等。您还可以使用 LINQ 进行计算。
标签: c# datagridview