如何在DataGrid中加上合计行?

luhow 2004-04-30 08:13:32
我想在DataGrid的最后的一行对所有行进行统计,前面的行是捆绑DataView而得的如:
a 1 1 1
b 1 1 1
c 1 1 1
合计 3 3 3
请问大家,这如何实现?谢谢!
...全文
144 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pierven 2004-04-30
  • 打赏
  • 举报
回复
也可以把 页脚 做成合计行,页脚第一列的text值为合计,其它列为datagrid中对应列各行的和。
常修溢 2004-04-30
  • 打赏
  • 举报
回复
用SQL语句加合计行,查询后再赋给DataGrid.试一下吧
triout 2004-04-30
  • 打赏
  • 举报
回复
在DataGrid的数据源上加合计行,具体的方法你可以在SQL语句添加,也可以在DataTable中手动添加,手动添加时请参考:

http://www.csdn.net/Develop/read_article.asp?id=22710
nnh 2004-04-30
  • 打赏
  • 举报
回复
看看吧:
<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
Dim Cnn as OleDbConnection

Private Sub Page_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs)
Dim connstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\inetpub\wwwroot\nhonline\datagrid\web_article\testcodes\14_addingcontrolstodatagridfooteritem\data.mdb"
Dim cnn As New OleDbConnection(connstr)
Dim da As New OleDbDataAdapter("select top 5 * from products_2", cnn)
Dim ds As New DataSet
da.Fill(ds, "Products")
DataGrid1.DataSource = ds
DataGrid1.DataBind()
End Sub

Function GetTotalPrice()
Dim connstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\inetpub\wwwroot\nhonline\datagrid\web_article\testcodes\14_addingcontrolstodatagridfooteritem\data.mdb"
Dim cnn As New OleDbConnection(connstr)
'Dim TotalPrice as Integer
Dim TotalPrice as double
Dim CmdDataCount as OleDbCommand
Cnn.Open()
CmdDataCount = New OleDbCommand("SELECT SUM(unitprice) FROM products_2",Cnn)
TotalPrice = CmdDataCount.ExecuteScalar()
Cnn.Close
Return (TotalPrice)
End Function

Private Sub DataGrid1_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
If (e.Item.ItemType = ListItemType.Footer) Then
e.Item.Cells(2).Text = "Total "
e.Item.Cells(2).HorizontalAlign = HorizontalAlign.Right
Dim oTextbox As New TextBox
oTextbox.Width = New Unit(100, UnitType.Pixel)
'oTextbox.Text = "90.3500dd" 'This can be changed to populate from some datasource.
oTextbox.Text = GetTotalPrice()
e.Item.Cells(3).Controls.Add(oTextbox)
End If
End Sub

</script>
<Form runat="server">
<asp:datagrid id="DataGrid1"
runat="server"
width="500px"
AllowPaging="False"
ItemStyle-CssClass="tableItem"
HeaderStyle-CssClass="tableHeader"
HeaderStyle-BackColor="#aaaadd"
AutoGenerateColumns="False"
DataKeyField="ProductID"
ShowFooter="True"
BorderWidth="0"
OnItemCreated="DataGrid1_ItemCreated"
>
<Columns>
<asp:TemplateColumn headertext="Product ID">
<ItemTemplate>
<asp:TextBox style="width:100px;" id="ProductID" runat="server"
Text='<%# Container.DataItem("ProductID") %>' >
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn headertext="Product Name">
<ItemTemplate>
<asp:TextBox style="width:200px;" id="ProductName" runat="server"
Text='<%# Container.DataItem("ProductName") %>' >
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn headertext="Quantity" FooterStyle-HorizontalAlign=Right >
<ItemTemplate>
<asp:TextBox style="width:100px;" id="Quantity" runat="server"
Text='<%# Container.DataItem("QuantityPerUnit") %>' >
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn headertext="Product Price" ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:TextBox style="width:100px;" id="ProductPrice" runat="server"
Text='<%# Container.DataItem("UnitPrice") %>' >
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
</Form>
luhow 2004-04-30
  • 打赏
  • 举报
回复
高手们帮指导一下啊,或看看有别的方法实现这个目标!
listhome 2004-04-30
  • 打赏
  • 举报
回复
没有用过!帮顶学习一下!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧