گروه بندی GridView در Asp.net
سه شنبه 5 خرداد 1394در این مقاله می خوام گروه بندی و محاسبات subtotal برای هر گروه GridView در Asp.Net شرح دهم :
در مرحله اول باید بانک اطلاعاتی رو بسازیم و اطلاعات را در آن وارد کنیم به عنوان مثال جدول زیر را مشاهده نمایید:
در بانک اطلاعاتی از ساختار جدول زیر استفاده کنید:
نام سه جدول :
1. Department (ID int, DeptName varchar(25) ) 2. Employee (Id int,deptid int,Name varchar(50),Address varchar(50),Phone varchar(15),datecreated datetime ) 3. EmployeeSalary (EmployeeId int,deptid int,Salary double,datecreated)
1. اضافه کردن سه بخش در جدول گروه بندی
2. اضافه کردن سه کارمند در هر بخش
3. اضافه کردن کمترین حقوق و دستمزد سه ماه هر یک از کارمندان
4. پیدا کردن سه ماه جمع حقوق و دستمزد هر یک از کارمندان و هم چنین مجموع تمام بخش حقوق کارمندان
کلیه دستورات به همراه تگ های موجود در صفحه را مشاهده نمایید :
1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 2. <!DOCTYPE html> 3. <html xmlns="http://www.w3.org/1999/xhtml"> 4. <head runat="server"> 5. <title></title> 6. </head> 7. <body> 8. <form id="form1" runat="server"> 9. <div> 10. </div> 11. <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound" OnRowCreated="GridView1_RowCreated"> 12. <Columns> 13. <asp:BoundField DataField="Id" HeaderText="id" /> 14. <asp:BoundField DataField="name" HeaderText="name" /> 15. <asp:BoundField DataField="Phone" HeaderText="phone" /> 16. <asp:BoundField DataField="tot" HeaderText="salary" /> 17. <asp:TemplateField Visible="false" ItemStyle-HorizontalAlign="Right"> 18. <FooterTemplate> 19. <div style="text-align: right;"> 20. <asp:Label ID="lblTotalqty" runat="server" Text='<%# Eval("total") %>' Font-Bold=true /> 21. </div> 22. </FooterTemplate> 23. </asp:TemplateField> 24. </Columns> 25. </asp:GridView> 26. </form> 27. </body> 28. </html>
در ادامه می توانید کد های .aspx.cs را مشاهده نمایید:
1. using System; 2. using System.Collections.Generic; 3. using System.Linq; 4. using System.Web; 5. using System.Web.UI; 6. using System.Web.UI.WebControls; 7. using System.Data.SqlClient; 8. using System.Data; 9. using System.Configuration; 10. public partial class _Default : System.Web.UI.Page 11. { 12. int qtyTotal = 0; 13. int grQtyTotal = 0; 14. int storid = 0; 15. int rowIndex = 1; 16. protected void Page_Load(object sender, EventArgs e) 17. { 18. SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings ["conn"].ConnectionString); 19. try 20. { 21. con.Open(); 22. SqlCommand cmd = new SqlCommand(" select a.id,a.DeptId,a.Name,a.Phone,a.tot,b.total,b.DeptId from ( select e1.id, e1.DeptId,e1.Name,e1.Phone,sum(es.Salary) as tot from Department D1 join Employee e1 on D1.ID=e1.Deptid join EmployeeSalary es on e1.Id = es.EmployeeId group by d1.id ,e1.Id,e1.deptid,e1.Name,e1.Phone,es.Salary ) a join ( select deptid, SUM(Salary) as total from EmployeeSalary group by deptid ) b on a.DeptId=b.deptid", con); 23. SqlDataAdapter adp = new SqlDataAdapter(cmd); 24. DataSet ds = new DataSet(); 25. adp.Fill(ds); 26. GridView1.DataSource = ds; 27. GridView1.DataBind(); 28. } 29. catch (SqlException ex) 30. { 31. // 32. } 33. finally 34. { 35. con.Close(); 36. } 37. } 38. protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 39. { 40. if (e.Row.RowType == DataControlRowType.DataRow) 41. { 42. storid = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "deptid").ToString()); 43. int tmpTotal = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "tot").ToString()); 44. qtyTotal += tmpTotal; 45. grQtyTotal += tmpTotal; 46. } 47. if (e.Row.RowType == DataControlRowType.Footer) 48. { 49. Label lblTotalqty = (Label)e.Row.FindControl("lblTotalqty"); 50. lblTotalqty.Text = grQtyTotal.ToString(); 51. } 52. } 53. protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 54. { 55. bool newRow = false; 56. if ((storid > 0) && (DataBinder.Eval(e.Row.DataItem, "DeptId") != null)) 57. { 58. if (storid != Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "DeptId").ToString())) 59. newRow = true; 60. } 61. if ((storid > 0) && (DataBinder.Eval(e.Row.DataItem, "DeptId") == null)) 62. { 63. newRow = true; 64. rowIndex = 0; 65. } 66. if (newRow) 67. { 68. GridView GridView1 = (GridView)sender; 69. GridViewRow NewTotalRow = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Insert); 70. NewTotalRow.Font.Bold = true; 71. NewTotalRow.BackColor = System.Drawing.Color.Gray; 72. NewTotalRow.ForeColor = System.Drawing.Color.White; 73. TableCell HeaderCell = new TableCell(); 74. HeaderCell.Text = "Total"; 75. HeaderCell.HorizontalAlign = HorizontalAlign.Left; 76. HeaderCell.ColumnSpan = 3; 77. NewTotalRow.Cells.Add(HeaderCell); 78. HeaderCell = new TableCell(); 79. HeaderCell.HorizontalAlign = HorizontalAlign.Right; 80. HeaderCell.Text = qtyTotal.ToString(); 81. NewTotalRow.Cells.Add(HeaderCell); 82. GridView1.Controls[0].Controls.AddAt(e.Row.RowIndex + rowIndex, NewTotalRow); 83. rowIndex++; 84. qtyTotal = 0; 85. } 86. } 87. }
- ASP.net
- 2k بازدید
- 4 تشکر