【发布时间】:2011-05-04 14:56:00
【问题描述】:
我试图只返回过去五年的年终信息(12 月 31 日),并在 DataGrid 中显示该信息。这不包括当年。
我的程序目前正在显示从上一年到当年最近一个月的最后一天的月末信息(例如:当前月份是 2011 年 5 月,我的 DataGrid 中显示的信息显示了存储的数据2010 年 1 月 31 日;2010 年 2 月 28 日;2010 年 3 月 31 日....2010 年 12 月 31 日;2011 年 1 月 31 日;2011 年 2 月 28 日;2011 年 3 月 31 日;4 月 30 日, 2011)。
它还会在 2010 年 12 月 31 日之后添加一个总计行,在 2011 年 4 月 30 日之后添加另一个总计行。新的 DataGrid 中不需要这两个总计行。
下面是返回月末信息的当前代码的 sn-p。
如果我遗漏了任何信息或不清楚我的问题,请告诉我。
对于这样一个菜鸟问题,我提前道歉,过去几天我一直在发疯,我无法弄清楚。
protected DataSet DS;
protected DataRow dr, dNew;
private void GetInfo()
{
}
private double getDbl(string columnName)
{
if (dr[columnName] != DBNull.Value)
return Double.Parse(dr[columnName].ToString());
return 0;
}
private void Calculate()
{
double cg, na, n, ka, nka, kaa, tca;
double tmr, to, gpo;
int year, rowcnt, rowindx, months;
months = -1;
rowindx = 0;
cg = 0;
na = 0;
n = 0;
ka = 0;
nka = 0;
kaa = 0;
tca = 0;
tmr = 0;
tor = 0;
gpo = 0;
rowcnt = DS.Tables[0].Rows.Count;
if (rowcnt > 0) year = Int32.Parse(DS.Tables[0].Rows[0]["cy"].ToString());
else year = 0;
for (int i = 0; i < rowcnt; i++)
{
months++;
dr = DS.Tables[0].Rows[i]
if (year != Int32.Parse(dr["cy"].ToString())
{
dNew = DS.Tables[0].NewRow();
dNew["ind"] = rowindx;
dNew["cg"] = cg;
dNew["na"] = na;
dNew["n"] = n;
dNew["ka"] = ka / months;
dNew["nka"] = nka / months;
dNew["kaa"] = kaa / months;
dNew["tca"] = tca / months;
dNew["tmr"] = tmr / months;
dNew["tor"] = tor;
dNew["gpo"] = gpo / months;
cg = 0;
na = 0;
n = 0;
ka = 0;
nka = 0;
kaa = 0;
tca = 0;
tmr = 0;
tor = 0;
gpo = 0;
months = 1;
year = Int32.Parse(dr["cy"].ToString());
rowindx++;
DS.Tables[0].Rows.Add(dNew);
dNew = DS.Tables[0].NewRow();
dNew["ind"] = rowindx;
rowindx++;
DS.Tables[0].Rows.Add(dNew);
}
cg += getDbl("cg");
na += getDbl("na");
n += getDbl("n");
ka += getDbl("ka");
nka += getDbl("nka");
kaa += getDbl("kaa");
tca += getDbl("tca");
tmr += getDbl("tmr");
tor += getDbl("tor");
gpo += getDbl("gpo");
dr["ind"] = rowindx;
rowindx++;
}
dNew = DS.Tables[0].NewRow();
dNew["ind"] = rowindx;
dNew["cg"] = cg;
dNew["na"] = na;
dNew["n"] = naum;
dNew["ka"] = ka / months;
dNew["nka"] = nka / months;
dNew["kaa"] = kaa / months;
dNew["tca"] = tca / months;
dNew["tmr"] = tmr / months;
dNew["tor"] = tor;
dNew["gpo"] = gpo / months;
DS.Tables[0].Rows.Add(dNew);
DS.Tables[0].DefaultView.Sort = "ind";
}
【问题讨论】:
-
您遗漏了您的问题。你有什么问题?
-
这些数据来自哪里?如果它来自数据库,我建议您执行一个为您计算数据的查询。
-
我建议您从问题中删除所有不必要的内容,以便人们更好地理解您的问题。例如,我不认为所有这些 "dNew["ka"] = ka / 月;dNew["nka"] = nka / 月;dNew["kaa"] = kaa / 月;"应该在那里,他们只是让那些从实际问题中得到帮助的人分散注意力。