无为清净楼资源网 Design By www.qnjia.com
论坛中最常见的一个问题是:“ 我怎样在 DataGrid 中显示列合计?”。 我亲自多次为这个问题提供了示例代码,因此,我想在DotNetJunkies 的标题中提供这么一份指南。 在这份指南中你将会学到怎样在 DataGrid 中编程实现对某一列的值进行统计,并在 DataGrid 的页脚中显示其合计值。这份指南中供下载的示例中包括了 C# 和 Visual Basic.NET 两种代码。

  这份指南的最终结果看起来像这样:

ASP.NET中为DataGrid添加合计字段
  从上图可看出:

  上面所用到的屏幕图片中的 DataGrid 是一个非常典型的 DataGrid 。有许多控制 DataGrid 外观的属性,它使用两个 BoundColumns 来操作数据,但这并不是最重要的。做好这项工作真正重要的是使用 DataGrid.OnItemDataBound 事件。这个事件将会触发每次绑定一条记录到 DataGrid。你可以为这个事件创建一个事件处理,以操作数据记录。在这种情况下,你将会得到运行时 Price 列的合计值。

  页脚指的是数据范围的最后一行。当这行被限定时,在事件句处理你可以得到 Price 列的运行时统计值。

  实施

  首先让我们找到一种方法来操作 Web 窗体输出。 这份指南中,你将使用一个 Web 窗体 (calcTotals.aspx) 以及一个类代码文件 (calcTotals.aspx.cs)。这份指南的意图是, 类代码将会使用 Just-In-Time 编译器来编译。 这里是 calcTotals.aspx 的代码:

<%@ Page Inherits="myApp.calcTotals" Src="20010731T0101.aspx.cs" %>


AutoGenerateColumns="False"
CellPadding="4" CellSpacing="0"
BorderStyle="Solid" BorderWidth="1"
Gridlines="None" BorderColor="Black"
ItemStyle-Font-Name="Verdana"
ItemStyle-Font-Size="9pt"
HeaderStyle-Font-Name="Verdana"
HeaderStyle-Font-Size="10pt"
HeaderStyle-Font-Bold="True"
HeaderStyle-ForeColor="White"
HeaderStyle-BackColor="Blue"
FooterStyle-Font-Name="Verdana"
FooterStyle-Font-Size="10pt"
FooterStyle-Font-Bold="True"
FooterStyle-ForeColor="White"
FooterStyle-BackColor="Blue"
OnItemDataBound="MyDataGrid_ItemDataBound"
ShowFooter="True">


ItemStyle-HorizontalAlign="Right"
HeaderStyle-HorizontalAlign="Center" />




  在 Web 窗体中你使用 @ Page 来直接声明这个页所继承的类代码。SRC 属性指明了类代码将使用 JIT 编译器来编译。 Web 窗体中的大部分代码样式声明用来使 DataGrid 外观变得更好看。

  最后指定的属性之一是 OnItemDataBound 属性。这个事件将会在 OnItemDataBound 事件发生时被触发。

  Web 窗体中的 DataGrid (MyGrid) 包含有两个 BoundColumns,一个是 Title ,另一个是Price。 这里将显示 Pubs 数据库(SQL Server)中 Titles 表的 title 及 price 列。

  忽略代码的定义

  类代码在所有的地方都将使用。在类代码中,你可以操作两个事件:Page_Load 事件以及 MyGrid_OnItemDataBound 事件。还有一个私有方法 CalcTotal, 用它来简单的完成运行时统计的数学运算。

  类代码基本结构块的起始部分:

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data;
using System.Data.SqlClient;

namespace myApp
"90%" align=center bgColor=#dadacf border=1>protected void Page_Load(object sender, EventArgs e)
"server=Localhost;database=pubs;uid=sa;pwd=;");//创建SQL连接
 SqlCommand myCommand = new SqlCommand("SELECT title, price FROM Titles WHERE price > 0", myConnection);//创建SQL命令

 try
 "90%" align=center bgColor=#dadacf border=1>private void CalcTotal(string _price)
"90%" align=center bgColor=#dadacf border=1>public void MyDataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
"", Convert.ToDouble(e.Item.Cells[1].Text));
 "Total";
  e.Item.Cells[1].Text = string.Format("", runningTotal);
 }
}
  在 MyGrid_ItemDataBound 事件句柄中,首先你得使用 ListItemType 判断当前的 DataGridItem 是一个数据项还是AlternatingItem 行。如果是数据项,你调用 CalcTotals,并将 Price 列的值作为参数传递给它;然后你以金额格式对 Price 列进行格式化及着色。

  如果 DataGridItem 是页脚,可以用金额格式显示 runningTotal。

  总结

  在这份指南中,你学到了怎样使用 DataGrid.OnItemDataBound 事件来实现运行时对DataGrid 的某一列进行统计。使用这个事件,你可以创建一个列的合计并可对DataGrid行的页脚进行着色。
标签:
|AS|SP|PN|NE|ET|T中|中为|为D|Da|at|ta|aG|Gr|ri|id|d添|添加|加合|合计|计字|字段|段|

无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。