代码之家  ›  专栏  ›  技术社区  ›  SpaceCowboy74 Mohammad Aghazadeh

需要将整个数据集的“汇总”添加到已分页的DataGrid的底部

  •  0
  • SpaceCowboy74 Mohammad Aghazadeh  · 技术社区  · 16 年前

    在ASP.NET 3.5中,我有一个绑定到SomWehat动态数据表的DataGrid。数据表是通过从数据集返回三个不同的表,并将它们组合在一起创建一个表来创建的。

    就像这样。第一个数据表返回将在最终数据表中的列的列表。第二个数据表返回一个人员列表、他们的ID号、状态信息和一个总计,列在最后一个表的行的末尾。第三个表返回给定类型的值列表,该类型与第一个表中的人员ID和列匹配。

    例子

    表1
    prodid__prodname
    1_______小部件
    2_______
    …______…

    表2
    人员ID人员姓名
    103约翰·史密斯
    105_______Tim Doe
    …_________…

    表3
    个人ID产品ID金额
    103______________.00
    103______________234.00
    105______________150.00
    105_____________189.00

    结果表变为
    人名prodname金额
    约翰·史密斯205.00
    约翰·史密斯234.00
    Tim Doe__________150.00
    Tim Doe____________189.00

    我可以编写一个字典,按名称对每一列求和,但我想在结束表绑定到的数据报的页脚中显示和。

    所以,小部件下面的和应该是355,东西下面的和应该是423。问题是,我不知道如何将这些值放在页脚中。我尝试了在网格上进行数据绑定,但是由于页脚没有绑定,所以它永远不会停在那里。我不知道是否可以“汇总”创建的表。

    有什么想法吗?

    4 回复  |  直到 16 年前
        1
  •  1
  •   David    16 年前

    代码隐藏中的类似内容将起作用。您需要更改单元格索引、数据表名称等,但这本质上是在页脚中添加和的方式。

    GridView1.FooterRow.Cells[4].Text = string.Format("{0:C}", myDataTable.Compute( "sum(Net_Price)", ""));
    

    您还必须将DataGrid的“showfooter”属性设置为“true”。

    全文如下: http://programming.top54u.com/post/ASP-Net-DataTable-Compute-Column-Sum-using-C-sharp.aspx

        2
  •  1
  •   Mitchel Sellers    16 年前

    所以根据我在这里的理解,您希望根据产品名称为每个分组获得一个小计。

    如果您知道列名是什么,那么可以使用LINQ对结果进行分组以获取聚合结果,如果您希望将它们作为最后一条记录插入,那么只需在执行查询后将它们插入到DS中即可。

        3
  •  0
  •   user187198    16 年前

    如何使用group by编写另一个SQL查询,然后您就可以很容易地获得字符串中每个子组的合计。然后分析查询结果集的每一行并构建一个字符串。使用您构建的字符串,可以很容易地将其插入到页脚中的任何列中。

        4
  •  0
  •   SpaceCowboy74 Mohammad Aghazadeh    16 年前

    我能解决这个问题。我意识到由于产品列表可以是动态的,所以在HTML/ASPX代码中没有boundColumns。我必须以编程方式创建它们。创建它们时,我检查列的标题。如果标题作为键存在于我的dictionary中,我将返回值(即和),并将其设置为column footerText值。

    不过,谢谢你的建议!