【问题标题】:ASP.NET c# adding row to datasetASP.NET c#向数据集添加行
【发布时间】:2011-06-17 19:57:51
【问题描述】:

我有一个数据集,我用它来计算一些销售数据,这个数据集有大约 15 列我想在数据集的末尾添加一个新行来计算每列的总数。这是数据集的示例

NAME | GP   | ORD_GP | EXP   | TOTAL GP
a      206     48      -239     15 
b      0       27       0        27

所以我想要做的是在最后添加另一行,这将计算每行的总和,所以它看起来像

NAME | GP   | ORD_GP | EXP   | TOTAL GP
a      206     48      -239     15 
b      0       27       0       27
TOTAL  206     75       -239    42

到目前为止我有

    ds.Tables[0].Rows.Add("TOTAL");
    foreach (DataColumn dc in ds.Tables[0].Columns)
    {
      // add upp column data and put into toal field
    }

【问题讨论】:

标签: c# asp.net dataset


【解决方案1】:

看看DataTable.Compute方法:

private void AddTotalRow(DataTable dt)
{
    DataRow dr = dt.NewRow();
    dr["NAME"] = "TOTAL";
    dr["GP"] = dt.Compute("Sum(GP)", null);
    dr["ORD_GP"] = dt.Compute("Sum(ORD_GP)", null);
    dr["EXP"] = dt.Compute("Sum(EXP)", null);
    dr["TOTAL_GP"] = dt.Compute("Sum(TOTAL_GP)", null);
    dt.Rows.Add(dr);
}

你只会调用这个函数一次,例如:

AddTotalRow(ds.Tables[0]);
//Now the first DataTable in your DataSet has an additonal record with the total values

根据你的新信息编辑

【讨论】:

  • 我认为我在每个循环中调用上述函数是否正确?
  • @c11ada: 不,这个函数只需要调用一次,因为dt.Compute("Sum(Total)", null) 已经隐式地总结了所有行的总列。看看我提供的链接。
  • 我尝试了您的方法,但似乎所做的只是添加一个空行和列!请查看更新,它可能会阐明我想要实现的目标
  • @c11ada: 我已经根据你的新信息编辑了我的答案。
【解决方案2】:

How to: Add Rows to a DataTable

DataRow newCustomersRow = dataSet1.Tables["Customers"].NewRow();

newCustomersRow["CustomerID"] = "ALFKI";
newCustomersRow["CompanyName"] = "Alfreds Futterkiste";

dataSet1.Tables["Customers"].Rows.Add(newCustomersRow);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-08
    • 2020-02-09
    • 2013-04-19
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多