• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

    ASP.NET中為DataGrid添加合計(jì)字段

    來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:45:44
    文檔

    ASP.NET中為DataGrid添加合計(jì)字段

    ASP.NET中為DataGrid添加合計(jì)字段: 論壇中最常見的一個(gè)問題是: 我怎樣在 DataGrid 中顯示列合計(jì)。 我親自多次為這個(gè)問題提供了示例代碼,因此,我想在DotNetJunkies 的標(biāo)題中提供這么一份指南。 在這份指南中你將會(huì)學(xué)到怎樣在 DataGrid 中編程實(shí)現(xiàn)對(duì)某一列的值進(jìn)行統(tǒng)計(jì),并在 Data
    推薦度:
    導(dǎo)讀ASP.NET中為DataGrid添加合計(jì)字段: 論壇中最常見的一個(gè)問題是: 我怎樣在 DataGrid 中顯示列合計(jì)。 我親自多次為這個(gè)問題提供了示例代碼,因此,我想在DotNetJunkies 的標(biāo)題中提供這么一份指南。 在這份指南中你將會(huì)學(xué)到怎樣在 DataGrid 中編程實(shí)現(xiàn)對(duì)某一列的值進(jìn)行統(tǒng)計(jì),并在 Data

      論壇中最常見的一個(gè)問題是:“ 我怎樣在 DataGrid 中顯示列合計(jì)?”。 我親自多次為這個(gè)問題提供了示例代碼,因此,我想在DotNetJunkies 的標(biāo)題中提供這么一份指南。 在這份指南中你將會(huì)學(xué)到怎樣在 DataGrid 中編程實(shí)現(xiàn)對(duì)某一列的值進(jìn)行統(tǒng)計(jì),并在 DataGrid 的頁(yè)腳中顯示其合計(jì)值。這份指南中供下載的示例中包括了 C# 和 Visual Basic.NET 兩種代碼。

      這份指南的最終結(jié)果看起來像這樣:


      從上圖可看出:

      上面所用到的屏幕圖片中的 DataGrid 是一個(gè)非常典型的 DataGrid 。有許多控制 DataGrid 外觀的屬性,它使用兩個(gè) BoundColumns 來操作數(shù)據(jù),但這并不是最重要的。做好這項(xiàng)工作真正重要的是使用 DataGrid.OnItemDataBound 事件。這個(gè)事件將會(huì)觸發(fā)每次綁定一條記錄到 DataGrid。你可以為這個(gè)事件創(chuàng)建一個(gè)事件處理,以操作數(shù)據(jù)記錄。在這種情況下,你將會(huì)得到運(yùn)行時(shí) Price 列的合計(jì)值。

      頁(yè)腳指的是數(shù)據(jù)范圍的最后一行。當(dāng)這行被限定時(shí),在事件句處理你可以得到 Price 列的運(yùn)行時(shí)統(tǒng)計(jì)值。

      實(shí)施

      首先讓我們找到一種方法來操作 Web 窗體輸出。 這份指南中,你將使用一個(gè) Web 窗體 (calcTotals.aspx) 以及一個(gè)類代碼文件 (calcTotals.aspx.cs)。這份指南的意圖是, 類代碼將會(huì)使用 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 來直接聲明這個(gè)頁(yè)所繼承的類代碼。SRC 屬性指明了類代碼將使用 JIT 編譯器來編譯。 Web 窗體中的大部分代碼樣式聲明用來使 DataGrid 外觀變得更好看。

      最后指定的屬性之一是 OnItemDataBound 屬性。這個(gè)事件將會(huì)在 OnItemDataBound 事件發(fā)生時(shí)被觸發(fā)。

      Web 窗體中的 DataGrid (MyGrid) 包含有兩個(gè) BoundColumns,一個(gè)是 Title ,另一個(gè)是Price。 這里將顯示 Pubs 數(shù)據(jù)庫(kù)(SQL Server)中 Titles 表的 title 及 price 列。

      忽略代碼的定義

      類代碼在所有的地方都將使用。在類代碼中,你可以操作兩個(gè)事件:Page_Load 事件以及 MyGrid_OnItemDataBound 事件。還有一個(gè)私有方法 CalcTotal, 用它來簡(jiǎn)單的完成運(yùn)行時(shí)統(tǒng)計(jì)的數(shù)學(xué)運(yùn)算。

      類代碼基本結(jié)構(gòu)塊的起始部分:

    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;
     }
    }


      在類代碼的基本結(jié)構(gòu)中,你必須使用相關(guān)語句導(dǎo)入名字空間(namespace)。在類聲明中,你聲明了兩個(gè)變量,一個(gè)是類代碼中映射 Web 窗體的 DataGrid(MyGrid)控件的變量;一個(gè)是用來操作 DataGrid 的 Price 列中運(yùn)行時(shí)統(tǒng)計(jì)的雙精度值。

      Page_Load 事件

      在 Page_Load 事件中,你所要做的就是連接到 SQL Server 并執(zhí)行一個(gè)簡(jiǎn)單的 SqlCommand。 你取得了所有 Price 值>0 的 title 和 price 數(shù)據(jù)。你使用 SqlCommand.ExecuteReader 方法返回一個(gè) SqlDataReader 并將其直接綁定到 DataGrid (MyGrid)。

    protected void Page_Load(object sender, EventArgs e)
    {
     SqlConnection myConnection = new SqlConnection("server=Localhost;database=pubs;uid=sa;pwd=;");//創(chuàng)建SQL連接
     SqlCommand myCommand = new SqlCommand("SELECT title, price FROM Titles WHERE price > 0", myConnection);//創(chuàng)建SQL命令

     try
     {
      myConnection.Open();//打開數(shù)據(jù)庫(kù)連接
      MyGrid.DataSource = myCommand.ExecuteReader();//指定 DataGrid 的數(shù)據(jù)源
      MyGrid.DataBind();//綁定數(shù)據(jù)到 DataGrid
      myConnection.Close();//關(guān)閉數(shù)據(jù)連接
     }
     catch(Exception ex)
     {
      //捕獲錯(cuò)誤
      HttpContext.Current.Response.Write(ex.ToString());
     }
    }


      CalcTotals 方法

      CalcTotals 方法用來處理 runningTotal 變量。這個(gè)值將以字符串形式來傳遞。 你需要將它解析為雙精度型,然后 runningTotal 變量就成了雙精度類型。

    private void CalcTotal(string _price)
    {
     try
     {
      runningTotal += Double.Parse(_price);
     }
     catch
     {
      //捕獲錯(cuò)誤
     }
    }

      MyGrid_ItemDataBound 事件

      MyGrid_ItemDataBound 事件在數(shù)據(jù)源中每行綁定到 DataGrid 時(shí)被調(diào)用。在這個(gè)事件處理中,你可以處理每一行數(shù)據(jù)。 這里你的目的是,你將需要調(diào)用 CalcTotals 方法并從 Price 列傳遞文本,并用金額型格式化每一行的 Price 列, 并在頁(yè)腳行中顯示 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 判斷當(dāng)前的 DataGridItem 是一個(gè)數(shù)據(jù)項(xiàng)還是AlternatingItem 行。如果是數(shù)據(jù)項(xiàng),你調(diào)用 CalcTotals,并將 Price 列的值作為參數(shù)傳遞給它;然后你以金額格式對(duì) Price 列進(jìn)行格式化及著色。

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

      總結(jié)

      在這份指南中,你學(xué)到了怎樣使用 DataGrid.OnItemDataBound 事件來實(shí)現(xiàn)運(yùn)行時(shí)對(duì)DataGrid 的某一列進(jìn)行統(tǒng)計(jì)。使用這個(gè)事件,你可以創(chuàng)建一個(gè)列的合計(jì)并可對(duì)DataGrid行的頁(yè)腳進(jìn)行著色。

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    ASP.NET中為DataGrid添加合計(jì)字段

    ASP.NET中為DataGrid添加合計(jì)字段: 論壇中最常見的一個(gè)問題是: 我怎樣在 DataGrid 中顯示列合計(jì)。 我親自多次為這個(gè)問題提供了示例代碼,因此,我想在DotNetJunkies 的標(biāo)題中提供這么一份指南。 在這份指南中你將會(huì)學(xué)到怎樣在 DataGrid 中編程實(shí)現(xiàn)對(duì)某一列的值進(jìn)行統(tǒng)計(jì),并在 Data
    推薦度:
    標(biāo)簽: net 合計(jì) asp
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: AV无码精品一区二区三区| 精品久久综合1区2区3区激情| 国产精品∧v在线观看| 蜜芽亚洲av无码精品色午夜| 国产精品网址在线观看你懂的| 国产精品福利自产拍在线观看| 亚洲国产精品一区二区第一页免| 国产福利精品在线观看| 国产产无码乱码精品久久鸭| 亚洲日韩国产精品乱| 韩国三级中文字幕hd久久精品 | 亚洲国产精品高清久久久| 国产午夜精品久久久久九九| 999精品视频| 亚洲AV无码精品色午夜果冻不卡| 久久精品一区二区三区不卡| 国产精品综合色区在线观看| 亚洲AV永久纯肉无码精品动漫| 日韩精品免费一线在线观看| 国产在线精品一区二区三区不卡 | 国产精品麻豆入口| 亚洲精品视频在线| 国产乱码精品一区二区三区四川人| 精品无码日韩一区二区三区不卡| 中文字幕日本精品一区二区三区| 无码人妻一区二区三区精品视频 | 精品国产一区二区三区AV性色| 四虎精品免费永久在线| 精品国产91久久久久久久| 国产成人精品日本亚洲18图| 国产精品第12页| 国产精品免费看久久久| 国内精品久久人妻互换| 精品一区二区三区免费毛片爱 | 91探花福利精品国产自产在线| 国产欧美精品AAAAAA片| 精品国产三级a在线观看| 国产精品一久久香蕉国产线看观看| 国产在线精品一区二区在线观看 | 国产精品一区二区久久| 国产一区二区三区久久精品|