Wednesday 28 June 2017

Group Grid in asp.net


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="groupgrid.aspx.cs" Inherits="Demo.groupgrid" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>  
    <link href="Content/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
    <form id="form1" runat="server">
        <div style="margin-left:30px;margin-top:10px">
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:BoundField HeaderText="ID" DataField="ansId" Visible="false">
                    </asp:BoundField>
                    <asp:BoundField HeaderText="Name" DataField="QansId"></asp:BoundField>
                    <asp:BoundField HeaderText="Qty/Unit" DataField="ans"></asp:BoundField>
                </Columns>
            </asp:GridView>
        </div>
    </form>
</body>
</html>






using Demo.Models;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Demo
{
    public partial class groupgrid : System.Web.UI.Page
    {
        Database1Entities db = new Database1Entities();
        Tbl_option qt = new Tbl_option();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                gridbind();
            }
        }
        protected void gridbind()
        {
            var qtbl = (from a in db.Tbl_option select new {
            a.QansId,
            a.ans,
            a.ansId}).ToList();
            GridView1.DataSource = qtbl;
            GridView1.DataBind();
            ShowingGroupingDataInGridView(GridView1.Rows, 0, 3); 
        }
        void ShowingGroupingDataInGridView(GridViewRowCollection gridViewRows, int startIndex, int totalColumns)
        {
            if (totalColumns == 0) return;
            int i, count = 1;
            ArrayList lst = new ArrayList();
            lst.Add(gridViewRows[0]);
            var ctrl = gridViewRows[0].Cells[startIndex];
            for (i = 1; i < gridViewRows.Count; i++)
            {
                TableCell nextTbCell = gridViewRows[i].Cells[startIndex];
                if (ctrl.Text == nextTbCell.Text)
                {
                    count++;
                    nextTbCell.Visible = false;
                    lst.Add(gridViewRows[i]);
                }
                else
                {
                    if (count > 1)
                    {
                        ctrl.RowSpan = count;
                        ShowingGroupingDataInGridView(new GridViewRowCollection(lst), startIndex + 1, totalColumns - 1);
                    }
                    count = 1;
                    lst.Clear();
                    ctrl = gridViewRows[i].Cells[startIndex];
                    lst.Add(gridViewRows[i]);
                }
            }
            if (count > 1)
            {
                ctrl.RowSpan = count;
                ShowingGroupingDataInGridView(new GridViewRowCollection(lst), startIndex + 1, totalColumns - 1);
            }
            count = 1;
            lst.Clear(); 
        }
    }
}









No comments:

Post a Comment