جمع کل ستون ها و زیرمجموع ستون ها در GridView
چهارشنبه 4 شهریور 1394در این پست نشان خواهیم داد که چگونه در یک GridView جمع مقادیر تمام ستون ها و ستون های هر صفحه را به صورت جداگانه بدست آوریم.
مرحله اول: بانک اطلاعاتی
ابتدا یک جدول مانند زیر در بانک اطلاعاتی ایجاد کنید.
درون جدول، داده وارد کرده و آن را پر کنید.
مرحله دوم: Visual Studio
در برنامه Visual Studio یک پروژه جدید ایجاد کنید. در Solution Explorer روی نام پروژه راست کلیک کرده و یک WebForm اضافه کنید.
مرحله سوم: طراحی رابط کاربری
در بخش طرارحی، یک gridview به صفحه اضافه کنید تا بتوانیم داده های درون جدول را در صفحه وب نشان دهیم.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Gridviewsum.WebForm1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body dir="rtl"> <form id="form1" runat="server"> <h2 style="color: #00CC00">Gridview Column Total and Sub Total</h2> <div> <asp:GridView ID="GridItem" runat="server" Width="100%" AutoGenerateColumns="False" RowStyle-HorizontalAlign="Center" ShowFooter="True" AllowPaging="True" PageSize="5" OnPageIndexChanging="GridItem_PageIndexChanging" OnRowDataBound="GridItem_RowDataBound" BackColor ="White" BorderColor="#CC9966" BorderWidth="1px" CellPadding="4" > <Columns> <asp:TemplateField HeaderText="شماره ردیف"> <ItemTemplate><%#Eval("Itemid")%></ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="نام کالا"> <ItemTemplate><%#Eval("ItemName")%></ItemTemplate> <FooterTemplate> <div style="padding:0 0 5px 0"><asp:Label Text="جمع صفحه" runat="server" /></div> <div><asp:Label Text="جمع کل" runat="server" /></div> </FooterTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="قیمت"> <ItemTemplate><asp:Label ID="lblPrice" runat="server" Text='<%#Eval("ItemPrice")%>'> </asp:Label></ItemTemplate> <FooterTemplate> <div style="padding:0 0 5px 0"><asp:Label ID="lblTotal" runat="server" /></div> <div><asp:Label ID="lblTotalPrice" runat="server" /></div> </FooterTemplate> </asp:TemplateField> </Columns> <FooterStyle BackColor="#FFFFCC" ForeColor="#330099" /> <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" /> <PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" /> <FooterStyle BackColor="#FFFFCC" ForeColor="red" HorizontalAlign="Center" /> <RowStyle BackColor="White" ForeColor="#330099" /> <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" /> <SortedAscendingCellStyle BackColor="#FEFCEB" /> <SortedAscendingHeaderStyle BackColor="#AF0101" /> <SortedDescendingCellStyle BackColor="#F6F0C0" /> <SortedDescendingHeaderStyle BackColor="#7E0000" /> </asp:GridView> </div> </form> </body> </html>
مرحله چهارم: کد
در این بخش می خواهیم کدهای GridView bind را بنویسیم و دستورات مربوط بهدو خصوصیت PageIndexChanging و RowDataBound را به برنامه اضافه کنیم.
همچنین، یک viewstate برای ذخیره کردن مقادیر price اضافه می کنیم.
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Gridviewsum { public partial class WebForm1 : System.Web.UI.Page { string connection = "Data Source=.; Initial Catalog=gridview; User id=sa;password=123;"; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindItemList(); } } private void BindItemList() { string Query = "SELECT * FROM Item"; using (SqlConnection con = new SqlConnection(connection)) { using (SqlCommand cmd = con.CreateCommand()) { cmd.CommandText = Query; con.Open(); DataTable dt = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; da.Fill(dt); if (ViewState["TotalPrice"] == null) { Decimal Price = 0; for (int i = 0; i <= dt.Rows.Count - 1; i++) { Price += dt.Rows[i].Field<Decimal>(2); } ViewState["TotalPrice"] = Price; } GridItem.DataSource = dt; GridItem.DataBind(); } } } protected void GridItem_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridItem.PageIndex = e.NewPageIndex; BindItemList(); } Decimal Page_Sum; protected void GridItem_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { Label lblPageTotal = (Label)e.Row.FindControl("lblPrice"); Page_Sum += Decimal.Parse(lblPageTotal.Text); } if (e.Row.RowType == DataControlRowType.Footer) { if (ViewState["TotalPrice"] != null && Page_Sum != 0) { Label lblTotal = (Label)e.Row.FindControl("lblTotal"); lblTotal.Text = Page_Sum.ToString(); Label lblTotalPrice = (Label)e.Row.FindControl("lblTotalPrice"); lblTotalPrice.Text = ViewState["TotalPrice"].ToString(); } } } } }
مرحله پنجم: مرورگر
اکنون، صفحه شما آماده اجرا می باشد. تصاویر نتایج را می توانید در زیر مشاهده کنید.
- ASP.net
- 3k بازدید
- 2 تشکر