This is a migrated thread and some comments may be shown as answers.

Group/UnGroupOnColumnDoubleClick

1 Answer 27 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Shinu
Top achievements
Rank 2
Shinu asked on 30 Sep 2008, 10:55 AM

Requirements

RadControls version

2008.01.0415.20
.NET version

2.0
Visual Studio version

2005
programming language

C#, Javascript
browser support

all browsers supported by RadControls


 
PROJECT DESCRIPTION

This project illustrates how to preform Grouping/UnGrouping in RadGrid on double clicking the column header. The task is achieved by adding an OnColumnDblClick client event for the Grid and performing a PostBack from the client side. Then in the RaisePostBack event Grouping/UnGrouping can be performed.

ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
 
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
<head runat="server"
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"
    <script type="text/javascript" language="javascript"
     function OnColumnDblClick(sender, eventArgs) 
     { 
        __doPostBack("<%= RadGrid1.UniqueID %>",  "ColumnDblClicked:" + eventArgs.get_gridColumn().get_uniqueName());   
     } 
    </script> 
        <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthWindConnectionString %>" 
            SelectCommand="SELECT [ProductName], [SupplierID], [CategoryID] FROM [Products]"
        </asp:SqlDataSource> 
        <br /> 
        <br /> 
        <div> 
            <telerik:RadGrid ID="RadGrid1" runat="server"  ShowGroupPanel="true" DataSourceID="SqlDataSource1" GridLines="None" 
                Skin="Office2007"
                <MasterTableView AutoGenerateColumns="False" DataSourceID="SqlDataSource1"
                    <RowIndicatorColumn Visible="False"
                        <HeaderStyle Width="20px" /> 
                    </RowIndicatorColumn> 
                    <ExpandCollapseColumn Resizable="False" Visible="False"
                        <HeaderStyle Width="20px" /> 
                    </ExpandCollapseColumn> 
                    <Columns> 
                        <telerik:GridBoundColumn DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" 
                            UniqueName="ProductName"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="SupplierID" DataType="System.Int32" HeaderText="SupplierID" 
                            SortExpression="SupplierID" UniqueName="SupplierID"
                        </telerik:GridBoundColumn> 
                        <telerik:GridBoundColumn DataField="CategoryID" DataType="System.Int32" HeaderText="CategoryID" 
                            SortExpression="CategoryID" UniqueName="CategoryID"
                        </telerik:GridBoundColumn> 
                    </Columns> 
                </MasterTableView> 
                <ClientSettings > 
                  <ClientEvents  OnColumnDblClick="OnColumnDblClick" /> 
                </ClientSettings> 
            </telerik:RadGrid></div
    </form> 
</body> 
</html> 
 


CS:
 
using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using Telerik.Web.UI; 
 
 
public partial class _Default : System.Web.UI.Page  
    protected void Page_Load(object sender, EventArgs e) 
    { 
 
    } 
    protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument) 
    { 
        base.RaisePostBackEvent(source, eventArgument); 
 
        if (source == this.RadGrid1 && eventArgument.IndexOf("ColumnDblClicked") != -1) 
        { 
 
            string strUniqueName = eventArgument.Split(':')[1]; 
            ArrayList arrClickedColumn; 
            if (Session["arrClickedColumn"] == null) 
            { 
                arrClickedColumn = new ArrayList(); 
            } 
            else 
            { 
                arrClickedColumn = (ArrayList)Session["arrClickedColumn"]; 
            } 
            if (!arrClickedColumn.Contains(strUniqueName)) 
                arrClickedColumn.Add(strUniqueName); 
            Session["arrClickedColumn"] = arrClickedColumn; 
 
            if (RadGrid1.MasterTableView.GroupByExpressions.Count > 0) 
            { 
                bool newGroup = true
                int GroupIndex; 
 
                for (GroupIndex = 0; GroupIndex < RadGrid1.MasterTableView.GroupByExpressions.Count; GroupIndex++) 
                { 
                    if (RadGrid1.MasterTableView.GroupByExpressions[GroupIndex].Expression.Contains(strUniqueName)) 
                        newGroup = false
                } 
                if (Session["arrClickedColumn"] != null) 
                { 
                    ArrayList arrColumns = (ArrayList)Session["arrClickedColumn"]; 
                    int arrColumnCount; 
                    if (newGroup == true) 
                    { 
                        arrColumnCount = arrColumns.Count - 1; 
                        AddGroup(strUniqueName); 
                        strUniqueName = string.Empty; 
                    } 
                    else 
                        arrColumnCount = arrColumns.Count; 
                    int columnCount; 
                    for (columnCount = 0; columnCount < arrColumnCount; columnCount++) 
                    { 
                        if (arrColumns[columnCount].ToString() == strUniqueName) 
                        { 
                            string strGrpexp = strUniqueName + " " + "Group By" + " " + strUniqueName; 
                            RadGrid1.MasterTableView.GroupByExpressions.Remove(strGrpexp); 
                            strUniqueName = string.Empty; 
                        } 
                         
                    } 
                    
                } 
            } 
            else 
            { 
                AddGroup(strUniqueName); 
            } 
 
            RadGrid1.Rebind(); 
 
        } 
    } 
 
    private void AddGroup(string strUniqueName) 
    { 
        if (strUniqueName != String.Empty) 
        { 
            GridGroupByExpression expression = new GridGroupByExpression(); 
            GridGroupByField gridGroupByField = new GridGroupByField(); 
            gridGroupByField = new GridGroupByField(); 
            gridGroupByField.FieldName = strUniqueName
            gridGroupByField.HeaderText = strUniqueName
            expression.SelectFields.Add(gridGroupByField); 
            expression.GroupByFields.Add(gridGroupByField); 
 
            RadGrid1.MasterTableView.GroupByExpressions.Add(expression); 
            strUniqueName = string.Empty; 
        } 
    }      
 

1 Answer, 1 is accepted

Sort by
0
Yavor
Telerik team
answered on 02 Oct 2008, 11:25 AM
Hi Shinu,

I have transferred this code library entry into a forum post, so that other users can benefit from it as well.
I have updated your Telerik points for your involvement.

All the best,
Yavor
the Telerik team

Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Tags
Grid
Asked by
Shinu
Top achievements
Rank 2
Answers by
Yavor
Telerik team
Share this question
or