私はXMLファイルから作成したデータセットからデータを取り込むDatagridviewを持っています。この部分は機能し、データセットの内容全体をデータグリッドに表示することができます。私はdatagridviewを日付と売りフラグに基づいてフィルタリングするための追加された機能を持っています。これは、日付を順番に調べていくうちに、datagridviewが更新されるときにも正常に機能します。しかし、私は "フィルターをかけた"データグリッドビューでいくつかの計算を行う必要があります。これらの計算は、様々な通貨をGBPに変換する必要があります。ですから、これを行うための最善の方法に関するいくつかの調査の後、私は可視のdatagridviewをループし、可視のそれぞれをテストすることに決めました。これは私が思いつくコードです。残念なことに、それを実行するとすべてのテストが失敗し、 "入力文字列が正しい形式ではありません"例外で失敗するelse節を実行しようとします。しかし、私は価格と通貨の価値観を見て、現在の状況には存在していません...今はこだわっていて、助けていただければ幸いです。フィルタリングされたDataGridViewで計算を実行
foreach (DataGridViewRow row in dataGridView1.Rows)
{
switch (row["currency"].ToString())
{
case "USD":
myCommission += double.Parse(row["commission"].ToString()) * (double.Parse(row["price"].ToString()) * UStoGB);
break;
case "EURO":
myCommission += double.Parse(row["commission"].ToString()) * (double.Parse(row["price"].ToString()) * EUtoGB);
break;
case else:
myCommission += double.Parse(row["commission"].ToString()) *(double.Parse(row["price"].ToString());
break;
}
}
ない、これが答えのいずれかの優れていること:おそらく...この間違った方法についてのだろう
おかげ
ハリー
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());
}
}
としてその作業だけでのみ操作する方法を考え出すことができませんでしたフィルタリングされたデータであり、データソース内のすべてのデータではありません。まだプログラミングの途中で作業していますので、まだ多くのことを学ぶことができます...ポインタのおかげです。 – user1152667
DataTable.DefaulViewを使用して、フィルタリングした結果をDataTable.DefaultView.ToTable()のように計算します。計算(SUM(IIF(currency = 'USD'、手数料* price * whatewer、IIF(currency = 'ユーロ'、手数料*価格* whatewer2)))))など)。 LINQを使って計算を行うこともできます。 – pistipanko