我要在datagrid中加入汇总,在datagrid的下端,如果加入。是不是加入pager还是footer

dbx 2003-09-29 05:00:26
我要在datagrid中加入汇总,在datagrid的下端,如果加入。是不是加入pager还是footer

帮忙啦,各位大侠
...全文
71 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
nnh 2004-01-02
  • 打赏
  • 举报
回复
給你一個實例,可以直接使用的.
<%@ 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>
greenbaby 2004-01-02
  • 打赏
  • 举报
回复

//创建一个数组,将你要合计汇总的内容一一按顺序放到里面
string[] typearr=new string[6];
typearr[0]="合计";
typearr[1]="...";
//只是举几个例子这里的几个情况
typearr[2]=myTable.Compute("sum(upnum)","").ToString();
typearr[3]=myTable.Compute("sum(downnum)","").ToString();
typearr[4]=Convert.IsDBNull(sumfeecode)?"":Convert.ToDouble(sumfeecode).ToString("0.00");
//不同的内容情况不同 typearr[5]=Convert.IsDBNull(sumfee)?"":Convert.ToDouble(sumfee).ToString("0.00");
....
ViewState["typearr"]=String.Join(",",typearr);

DataView myView=myTable.DefaultView;
mydatagrid.DataSource=myView;
myView.Sort=(string)ViewState["typesortstr"];
mydatagrid.DataBind();

//在datagrid的ItemCreated事件里面添加以下代码
private void mydatagrid_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Footer)//判断是否是footer
{string[] sumarr=((string)ViewState["sumarr"]).Split(',');
{
for(int i=0;i<e.Item.Cells.Count;i++)
e.Item.Cells[i].Text=sumarr[i];
}//把footer里填充以刚刚建好的数组
}
}

//这个是在datagrid的属性,注意!!!mydatagrid.ShowFooter="True"!!!
<asp:datagrid id="mydatagrid" runat="server" BorderColor="Black" BorderStyle="Solid" BorderWidth="1px" Width="96%" AutoGenerateColumns="False" AllowSorting="True" ShowFooter="True">
senzz 2004-01-02
  • 打赏
  • 举报
回复
int aaa = 0 ;
for(i=0;i<DataSet.Tables[0].Rows.Count;i++)
{
int aaa = aaa + DataSet.Tables[0].Rows[i][" 字段"];
}



Datagrid.Items[某行].Cells[某列].Text = aaa.ToString();
senzz 2004-01-02
  • 打赏
  • 举报
回复
在datatable 里添加 new DataRow();
然后绑定datagrid

把计算值放在该新添加的行某一个cell里去
xrll 2004-01-02
  • 打赏
  • 举报
回复
http://www.dotnetjunkies.com/Tutorial/2F527E21-A6C5-497A-8B56-4150BDAF711D.dcik
senzz 2004-01-02
  • 打赏
  • 举报
回复
也可以放在大 datagrid 的 item 里
graceyt 2004-01-02
  • 打赏
  • 举报
回复
看不明白,能具体给个例子吗?我也想做一个汇总,放在最后一行,显示所有行的每列的总和,不知道怎么做?上面各位说得我都看不懂!谢谢各位
xrll 2003-09-29
  • 打赏
  • 举报
回复
<asp:TemplateColumn HeaderText="商品">
<HeaderStyle Width="145px"></HeaderStyle>
<ItemTemplate>
<asp:Label id=rb_0 runat="server" Text='<%# Convert.ToInt32(DataBinder.Eval(Container.DataItem,"IntegerValue"))<3?true:false %>' runat="server"/>
</ItemTemplate>
<footertemplate>
......
</footertemplate>
</asp:TemplateColumn>
gshope 2003-09-29
  • 打赏
  • 举报
回复
在Footer里你可以放table,也可以放任意多个控件。
dbx 2003-09-29
  • 打赏
  • 举报
回复
footer如何加templatecolumn呀。都没有<asp:footer>
seesea125 2003-09-29
  • 打赏
  • 举报
回复
footer变成三行,footer里加模板列,再放table
seesea125 2003-09-29
  • 打赏
  • 举报
回复
footer了
dbx 2003-09-29
  • 打赏
  • 举报
回复
汇总比较多,如何便footer变成三行或者更多。。。
acewang 2003-09-29
  • 打赏
  • 举报
回复
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q313154
gshope 2003-09-29
  • 打赏
  • 举报
回复
是Footer,注意DataGrid1.ShowFooter="True"

62,041

社区成员

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

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

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

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