知识大全 ASP.NET中为DataGrid添加合计字段

Posted 事件

篇首语:尺有所短;寸有所长。物有所不足;智有所不明。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET中为DataGrid添加合计字段相关的知识,希望对你有一定的参考价值。

ASP.NET中为DataGrid添加合计字段  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

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

  

  从上图可看出

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

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

  实施

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

  AutoGenerateColumns= False CellPadding= CellSpacing= BorderStyle= Solid BorderWidth= Gridlines= None BorderColor= Black ItemStyle Font Name= Verdana ItemStyle Font Size= pt HeaderStyle Font Name= Verdana HeaderStyle Font Size= pt HeaderStyle Font Bold= True HeaderStyle ForeColor= White HeaderStyle BackColor= Blue FooterStyle Font Name= Verdana FooterStyle Font Size= pt 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 public class calcTotals Page protected DataGrid MyGrid private double runningTotal =

  在类代码的基本结构中 你必须使用相关语句导入名字空间(namespace) 在类声明中 你声明了两个变量 一个是类代码中映射 Web 窗体的 DataGrid(MyGrid)控件的变量 一个是用来操作 DataGrid 的 Price 列中运行时统计的双精度值

  Page_Load 事件

  在 Page_Load 事件中 你所要做的就是连接到 SQL Server 并执行一个简单的 SqlCommand 你取得了所有 Price 值> 的 title 和 price 数据 你使用 SqlCommand ExecuteReader 方法返回一个 SqlDataReader 并将其直接绑定到 DataGrid (MyGrid)

  protected void Page_Load(object sender EventArgs e)

   SqlConnection myConnection = new SqlConnection( server=Localhost database=pubs uid=sa pwd= ) //创建SQL连接SqlCommand myCommand = new SqlCommand( SELECT title price FROM Titles WHERE price > myConnection) //创建SQL命令

  try myConnection Open() //打开数据库连接MyGrid DataSource = myCommand ExecuteReader() //指定 DataGrid 的数据源MyGrid DataBind() //绑定数据到 DataGrid myConnection Close() //关闭数据连接 catch(Exception ex)

   //捕获错误HttpContext Current Response Write(ex ToString())

  CalcTotals 方法

  CalcTotals 方法用来处理 runningTotal 变量 这个值将以字符串形式来传递 你需要将它解析为双精度型 然后 runningTotal 变量就成了双精度类型

  private void CalcTotal(string _price)

   try runningTotal += Double Parse(_price) catch //捕获错误

  MyGrid_ItemDataBound 事件

  MyGrid_ItemDataBound 事件在数据源中每行绑定到 DataGrid 时被调用 在这个事件处理中 你可以处理每一行数据 这里你的目的是 你将需要调用 CalcTotals 方法并从 Price 列传递文本 并用金额型格式化每一行的 Price 列 并在页脚行中显示 runningTotal 的值

  public void MyDataGrid_ItemDataBound(object sender DataGridItemEventArgs e)

   if (e Item ItemType == ListItemType Item e Item ItemType == ListItemType AlternatingItem)

   CalcTotal( e Item Cells[ ] Text ) e Item Cells[ ] Text = string Format( c Convert ToDouble(e Item Cells[ ] Text)) else if(e Item ItemType == ListItemType Footer )

   e Item Cells[ ] Text= Total e Item Cells[ ] Text = string Format( c runningTotal)

  在 MyGrid_ItemDataBound 事件句柄中 首先你得使用 ListItemType 判断当前的 DataGridItem 是一个数据项还是AlternatingItem 行 如果是数据项 你调用 CalcTotals 并将 Price 列的值作为参数传递给它 然后你以金额格式对 Price 列进行格式化及着色

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

  总结

cha138/Article/program/net/201311/13921

相关参考

知识大全 ASP.NET中为GridView添加删除提示框

ASP.NET中为GridView添加删除提示框  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET中的DataGrid的属性

ASP.NET中的DataGrid的属性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Asp.NET自定义DataGrid控件

Asp.NET自定义DataGrid控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一&nb

知识大全 ASP.NET中实现DataGrid数据排序

ASP.NET中实现DataGrid数据排序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Vi

知识大全 一个ASP.Net的DataGrid分页控件

一个ASP.Net的DataGrid分页控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  写的

知识大全 ASP.NET中DataGrid控件应用技巧简述

ASP.NET中DataGrid控件应用技巧简述  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 asp.net中将DataGrid的内容导出为excel文件

asp.net中将DataGrid的内容导出为excel文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 Asp.net中DataGrid控件的自定义分页

Asp.net中DataGrid控件的自定义分页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET中自定义DataGrid分页设置的实现

ASP.NET中自定义DataGrid分页设置的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 在ASP.NET中为图像加入版权信息

在ASP.NET中为图像加入版权信息  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  你试过来进行