جمع کل ستون ها و زیرمجموع ستون ها در 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 تشکر