亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

ASP.NET中為DataGrid添加合計字段

2024-07-10 13:13:49
字體:
來源:轉載
供稿:網友
論壇中最常見的一個問題是:“ 我怎樣在 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 的代碼:

<%@ 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
{
 public class calcTotals : Page
 {
  protected DataGrid MyGrid;
  private double runningTotal = 0;
 }
}


  在類代碼的基本結構中,你必須使用相關語句導入名字空間(namespace)。在類聲明中,你聲明了兩個變量,一個是類代碼中映射 Web 窗體的 DataGrid(MyGrid)控件的變量;一個是用來操作 DataGrid 的 Price 列中運行時統計的雙精度值。

  Page_Load 事件

  在 Page_Load 事件中,你所要做的就是連接到 SQL Server 并執行一個簡單的 SqlCommand。 你取得了所有 Price 值>0 的 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 > 0", 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[1].Text );
  e.Item.Cells[1].Text = string.Format("{0:c}", Convert.ToDouble(e.Item.Cells[1].Text));
 }
 else if(e.Item.ItemType == ListItemType.Footer )
 {
  e.Item.Cells[0].Text="Total";
  e.Item.Cells[1].Text = string.Format("{0:c}", runningTotal);
 }
}


  在 MyGrid_ItemDataBound 事件句柄中,首先你得使用 ListItemType 判斷當前的 DataGridItem 是一個數據項還是AlternatingItem 行。如果是數據項,你調用 CalcTotals,并將 Price 列的值作為參數傳遞給它;然后你以金額格式對 Price 列進行格式化及著色。

  如果 DataGridItem 是頁腳,可以用金額格式顯示 runningTotal。

  總結

  在這份指南中,你學到了怎樣使用 DataGrid.OnItemDataBound 事件來實現運行時對DataGrid 的某一列進行統計。使用這個事件,你可以創建一個列的合計并可對DataGrid行的頁腳進行著色。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一本色道久久88综合日韩精品| 日韩免费观看高清| 在线观看日韩av| 亚洲精美色品网站| 成人黄色在线观看| 久久免费在线观看| 欧美激情奇米色| 日韩视频精品在线| 日韩av电影在线网| 欧美做受高潮电影o| 欧美午夜xxx| 日韩精品免费看| 欧洲美女7788成人免费视频| 欧美高清电影在线看| 日韩精品视频在线免费观看| 26uuu亚洲伊人春色| 成人免费视频网| 国产精品成人在线| 国内精品伊人久久| 成人精品一区二区三区| 丝袜美腿精品国产二区| 亚洲毛茸茸少妇高潮呻吟| 国产欧美在线看| 一区二区三区动漫| 国产成一区二区| 亚洲精品第一国产综合精品| 97精品一区二区三区| 国产欧美在线观看| 久久香蕉国产线看观看av| 亚洲香蕉在线观看| 日韩美女免费观看| 久久久国产精品免费| 国产精品一区二区三区久久久| 色爱av美腿丝袜综合粉嫩av| 国产91色在线免费| 欧美性资源免费| 少妇高潮 亚洲精品| 精品女同一区二区三区在线播放| www.亚洲人.com| 久久影视电视剧凤归四时歌| 久久久亚洲精品视频| 日韩最新av在线| 欧美午夜电影在线| 久久激情视频免费观看| 91精品视频免费看| 91九色综合久久| 国产成人亚洲综合91| 欧美精品久久久久久久久| 精品夜色国产国偷在线| 懂色av一区二区三区| 欧美色视频日本高清在线观看| 欧美在线视频观看免费网站| 久久99久久久久久久噜噜| 亚洲国产欧美一区二区三区同亚洲| 国内成人精品一区| 国产免费久久av| 97在线视频一区| 欧美老女人在线视频| 精品国产一区二区三区久久狼5月| 国产精品人成电影| 欧美激情亚洲综合一区| 欧美日韩国产精品一区二区不卡中文| 欧美激情a∨在线视频播放| 欧美性高潮在线| 欧美怡红院视频一区二区三区| 国产精品久久久久久五月尺| 欧美激情视频一区二区三区不卡| **欧美日韩vr在线| 日韩在线国产精品| 自拍偷拍亚洲区| 91久久久精品| 亚洲欧美激情精品一区二区| 国产精品国产三级国产aⅴ9色| 乱亲女秽乱长久久久| 国模精品系列视频| 92看片淫黄大片看国产片| 97在线免费视频| 91精品国产综合久久久久久蜜臀| 曰本色欧美视频在线| 国产精品一区久久久| 日韩在线视频免费观看高清中文| 黑人巨大精品欧美一区免费视频| 有码中文亚洲精品| 欧美美最猛性xxxxxx| 久久久久久久国产精品视频| 亚洲黄色有码视频| 国产精品国产福利国产秒拍| 国产成人一区二区三区电影| 色综合久久久久久中文网| 国产精品一区二区三区在线播放| 国产日韩欧美在线播放| 欧美巨猛xxxx猛交黑人97人| 亚洲999一在线观看www| 国产精品美女主播| 亚洲精品久久久久中文字幕欢迎你| 日韩日本欧美亚洲| 日韩欧美国产黄色| 国产精品极品美女粉嫩高清在线| 国产精品精品一区二区三区午夜版| 91高清在线免费观看| 欧美在线中文字幕| 亚洲新声在线观看| 久久韩剧网电视剧| 中文字幕欧美日韩在线| 成人写真视频福利网| 国产丝袜视频一区| 一区二区日韩精品| 夜夜嗨av一区二区三区四区| 亚洲欧洲偷拍精品| 国内成人精品视频| 国产成人av网址| 97精品免费视频| 午夜欧美大片免费观看| 日韩av在线不卡| 欧美午夜精品久久久久久人妖| 亚洲少妇激情视频| 蜜臀久久99精品久久久久久宅男| 亚洲精品久久久久久久久久久久| 亚洲一区二区免费在线| 韩曰欧美视频免费观看| 日韩在线视频网站| 亚洲精品成人网| 欧美另类99xxxxx| 国产精品永久免费视频| 国产精品ⅴa在线观看h| 亚洲美女中文字幕| 欧美孕妇与黑人孕交| 日韩在线观看成人| 国产精品视频xxx| 一夜七次郎国产精品亚洲| 亚洲第一精品自拍| 一本大道久久加勒比香蕉| 久久久久久久久久av| 国产精品久久久久影院日本| 国产成人精品久久亚洲高清不卡| 亚洲毛片在线免费观看| 中文字幕日韩精品在线| 日韩欧美极品在线观看| 国产精品老牛影院在线观看| 久久久成人精品| 国产日韩欧美中文在线播放| 97久久久免费福利网址| 国产欧美一区二区三区在线看| 亚洲天堂av在线播放| 91在线中文字幕| 国产成人精彩在线视频九色| 亚洲欧美综合精品久久成人| 色婷婷久久一区二区| 国产日韩欧美夫妻视频在线观看| 日产精品99久久久久久| 精品动漫一区二区三区| 亚洲一区二区自拍| 日本国产高清不卡| 国产精品久久二区| 日韩女在线观看| 国产美女搞久久| 亚洲在线观看视频网站| 国产乱人伦真实精品视频| 国产91网红主播在线观看| 欧美激情欧美狂野欧美精品| 日韩中文在线中文网在线观看| 国产精品专区第二| 久久久免费高清电视剧观看| 欧美野外猛男的大粗鳮|