我在http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.expression(v=VS.90).aspx看到的这个属性,感觉非常有用,不过我有个特殊的应用,不知道怎么写。比如我的表格中,已有一列为“数量”,一共有3行,依次的数据为1、2、3。我增加了一列,用上述属性,如果写成Sum(数量),那么三行的值都是6。而我实际想得到的是依次的累计值,应该分别是1、3(1+2)、6(1+2+3),请问这样的Expression应该怎么写,或者根本是不可能完成的,谢谢。
解决方案 »
- winform里面如何实现datagrid双击一条记录后弹出新的界面
- c#中的PictureBox如何显示图片?
- 如何逐个输出DataSet里的名单
- c#+oracle用dataset更新问题
- 请问我在Winform中用HttpWebRequest和HttpWebResponse访问网络时,程序界面为什么会有短暂的不响应?
- 有广东江门的朋友吗?
- 一个基础类方面的问题
- 如何取到指定字符串中的两个字符之间的字符串!
- C#在XP中创建发送邮件程序
- C#的DatagridView控件在数据量过大时加载过慢
- NetworkStream BeginRead中的回调函数接收不到数据,只能接收到数据长度,在线等求解惑????
- 求一匹配URL的正则表达式。
DataTable dt = new DataTable();
dt.RowChanged += new DataRowChangeEventHandler(Row_Changing); dt.Columns.Add(new DataColumn("num"));
dt.Columns.Add(new DataColumn("custom")); DataRow dr = dt.NewRow();
dr[0] = 1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dt.Rows.Add(dr);private void Row_Changing(object sender, DataRowChangeEventArgs e)
{
DataTable dt = sender as DataTable;
int index = dt.Rows.IndexOf(e.Row);
if (index > -1)
{
if (e.Row["custom"] == DBNull.Value)
{
if (index == 0)
{
e.Row["custom"] = e.Row["num"];
}
else
{
int temp, custom;
int.TryParse((e.Row["num"] ?? "").ToString(), out temp);
int.TryParse((dt.Rows[index - 1]["custom"] ?? "").ToString(), out custom);
e.Row["custom"] = custom + temp;
}
}
}
}