2007-09-27

ASP.NET数据格中计算数值总和

来源: 开发者在线 作者:Tony Patton 评论 0 条
 

以表格形式显示数据可以带来很多好处。在本文中,我将讲解如何使用DataGrid计算总计,这在处理数值时会经常用到。

在讨论DataGrid控制时,经常可以听到别人对此方法的嘲笑。他们经常抛弃它转而使用第三方的工具。事实上,DataGrid作为. NET Framework的核心部分,已成为我开发工具箱中极具价值的工具。

什么是总计?

在应用程序中使用DataGrid控制可以答应你以对绝大部分用户来说熟悉的格式来发布数据(栅格格式经常被用于如微软Excel等电子数据表格应用程序)。使用此类型的应用程序,用户可以按照习惯查看自定义函数如每栏总计、平均值等。而这些函数并不是DataGrid的标准函数,你可以自行编写代码来轻松地实现这些函数。

在本例中,我将使用所有SQL Server版本都可提供的Northwind范例数据库,并从顺序表格中提取数据。我将对货物栏计算总计值,这个总计值应当在DataGrid中一致地显示出来。一下就是此应用程序的C#代码。

<%@ Import Namespace="System.Data.SqlClient" %>

<%@ Import Namespace="System.Data" %>

<%@ Page language="c#" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML><HEAD><title>Builder.com DataGrid Totals Example</title>

</HEAD>

<body MS_POSITIONING="GridLayout">

double totalFreight = 0;

private void Page_Load(object sender, System.EventArgs e) {

if (!Page.IsPostBack) {

BindData();

} }

private void BindData() {

const string sConn;

sConn = "server=(local);Initial Catalog=Northwind;UID=ctester;PWD=password";

try {

SqlConnection conn = new SqlConnection(sConn);

conn.Open();

string sSQL = "SELECT TOP 10 OrderID, Freight, ShipName, ShipCountry FROM

Orders";

SqlCommand comm = new SqlCommand(sSQL, conn);

SqlDataReader dr = comm.ExecuteReader();

dgNorthwind.DataSource = dr;

dgNorthwind.DataBind();

} catch (Exception e) {

Console.WriteLine(e.ToString());

} }

private void doTotal(object sender, DataGridItemEventArgs e) {

if (e.Item.ItemType == ListItemType.Item | e.Item.ItemType ==

ListItemType.AlternatingItem) {

double currentFreight = Convert.ToDouble(DataBinder._Eval(e.Item.DataItem,

"Freight"));

totalFreight = currentFreight;

} else if (e.Item.ItemType == ListItemType.Footer) {

e.Item.Cells[2].Text = "Total:";

e.Item.Cells[3].Text = Convert.ToString(totalFreight);

} }

</script>

<form id="frmDataGridTotals" method="post" runat="server">

<asp:DataGrid id="dgNorthwind"

style="Z-INDEX: 101; LEFT: 24px; POSITION: absolute; TOP: 32px"

runat="server" Height="320px" Width="496px"

AutoGenerateColumns="False"

onfiltered="doTotal"

ShowFooter="True" CellPadding="4" CellSpacing="0"

BorderStyle="Solid" BorderWidth="1" Gridlines="None"
共3页: 上一页 1 [2] [3] 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:使用ASP脚本技术  
下一篇:用ASP创建数据库前端
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号