ASPxGridView.IsGroupRow(Int32) Method
Indicates whether the specified row is the group row.
Namespace: DevExpress.Web
Assembly: DevExpress.Web.v19.1.dll
Declaration
public bool IsGroupRow(
int visibleIndex
)
Public Function IsGroupRow(
visibleIndex As Integer
) As Boolean
Parameters
Name |
Type |
Description |
visibleIndex |
Int32 |
An integer value that identifies the row by its visible index.
|
Returns
Type |
Description |
Boolean |
true if the specified row is the group row; otherwise, false.
|
To learn more, see Grouping Overview.
Example
This example shows how you can numerate grid rows using an unbound column. If the grid is not grouped by columns, rows are numerated starting from the first to the last. If a grid is grouped by a column, rows are numerated starting from the first row to the last row in a group.
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DevExpress.Web.ASPxGridView;
using System.Data;
public partial class _Default : System.Web.UI.Page {
private List<int> groupIndexes = new List<int>();
int rowInGroupNumber = 1;
bool isFirstDisplayedRow = true;
private bool IsGridUngrouped { get { return groupIndexes.Count == 0; } }
protected void grid_CustomColumnDisplayText(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDisplayTextEventArgs e) {
if (e.Column.Name != "RowNumber")
return;
ASPxGridView g = sender as ASPxGridView;
if (IsGridUngrouped)
rowInGroupNumber = e.VisibleRowIndex + 1;
else {
if (isFirstDisplayedRow) {
rowInGroupNumber = e.VisibleRowIndex - GetParentGroupIndex(e.VisibleRowIndex);
isFirstDisplayedRow = false;
}
else {
if (IsRowIsFirstGroup(e.VisibleRowIndex))
rowInGroupNumber = 1;
else
rowInGroupNumber++;
}
}
e.Value = rowInGroupNumber;
e.DisplayText = rowInGroupNumber.ToString();
}
protected void grid_BeforeGetCallbackResult(object sender, EventArgs e) {
CollectGroupIndexes();
}
private void CollectGroupIndexes() {
groupIndexes.Clear();
for (int i = 0; i < grid.VisibleRowCount; i++) {
if (grid.IsGroupRow(i))
groupIndexes.Add(i);
}
}
private int GetParentGroupIndex(int index) {
return groupIndexes.FindLast(delegate(int i) { return i < index; });
}
private bool IsRowIsFirstGroup(int index) {
return grid.IsGroupRow(index - 1);
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v10.2, Version=10.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v10.2, Version=10.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<dx:ASPxGridView ID="grid" runat="server" AutoGenerateColumns="False"
DataSourceID="dsProducts" KeyFieldName="ProductID" OnCustomColumnDisplayText="grid_CustomColumnDisplayText"
OnBeforeGetCallbackResult="grid_BeforeGetCallbackResult">
<Columns>
<dx:GridViewDataTextColumn Caption="#" Name="RowNumber" UnboundType="Integer" VisibleIndex="0">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="ProductID" ReadOnly="True" VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="ProductName" VisibleIndex="2">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CategoryID" VisibleIndex="3">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="QuantityPerUnit" VisibleIndex="4">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="UnitPrice" VisibleIndex="5">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="UnitsInStock" VisibleIndex="6">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="UnitsOnOrder" VisibleIndex="7">
</dx:GridViewDataTextColumn>
</Columns>
<Settings ShowGroupPanel="True" />
</dx:ASPxGridView>
<asp:SqlDataSource ID="dsProducts" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [ProductID], [ProductName], [CategoryID], [QuantityPerUnit], [UnitPrice], [UnitsInStock], [UnitsOnOrder] FROM [Alphabetical list of products]">
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
<%@ Page Language="vb" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v10.2, Version=10.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v10.2, Version=10.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<dx:ASPxGridView ID="grid" runat="server" AutoGenerateColumns="False"
DataSourceID="dsProducts" KeyFieldName="ProductID" OnCustomColumnDisplayText="grid_CustomColumnDisplayText"
OnBeforeGetCallbackResult="grid_BeforeGetCallbackResult">
<Columns>
<dx:GridViewDataTextColumn Caption="#" Name="RowNumber" UnboundType="Integer" VisibleIndex="0">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="ProductID" ReadOnly="True" VisibleIndex="1">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="ProductName" VisibleIndex="2">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CategoryID" VisibleIndex="3">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="QuantityPerUnit" VisibleIndex="4">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="UnitPrice" VisibleIndex="5">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="UnitsInStock" VisibleIndex="6">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="UnitsOnOrder" VisibleIndex="7">
</dx:GridViewDataTextColumn>
</Columns>
<Settings ShowGroupPanel="True" />
</dx:ASPxGridView>
<asp:SqlDataSource ID="dsProducts" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [ProductID], [ProductName], [CategoryID], [QuantityPerUnit], [UnitPrice], [UnitsInStock], [UnitsOnOrder] FROM [Alphabetical list of products]">
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports DevExpress.Web.ASPxGridView
Imports System.Data
Partial Public Class _Default
Inherits System.Web.UI.Page
Private groupIndexes As List(Of Integer) = New List(Of Integer)()
Private rowInGroupNumber As Integer = 1
Private isFirstDisplayedRow As Boolean = True
Private checkedIndex As Integer
Private ReadOnly Property IsGridUngrouped() As Boolean
Get
Return groupIndexes.Count = 0
End Get
End Property
Protected Sub grid_CustomColumnDisplayText(ByVal sender As Object, ByVal e As DevExpress.Web.ASPxGridView.ASPxGridViewColumnDisplayTextEventArgs)
If e.Column.Name <> "RowNumber" Then
Return
End If
Dim g As ASPxGridView = TryCast(sender, ASPxGridView)
If IsGridUngrouped Then
rowInGroupNumber = e.VisibleRowIndex + 1
Else
If isFirstDisplayedRow Then
rowInGroupNumber = e.VisibleRowIndex - GetParentGroupIndex(e.VisibleRowIndex)
isFirstDisplayedRow = False
Else
If IsRowIsFirstGroup(e.VisibleRowIndex) Then
rowInGroupNumber = 1
Else
rowInGroupNumber += 1
End If
End If
End If
e.Value = rowInGroupNumber
e.DisplayText = rowInGroupNumber.ToString()
End Sub
Protected Sub grid_BeforeGetCallbackResult(ByVal sender As Object, ByVal e As EventArgs)
CollectGroupIndexes()
End Sub
Private Sub CollectGroupIndexes()
groupIndexes.Clear()
For i As Integer = 0 To grid.VisibleRowCount - 1
If grid.IsGroupRow(i) Then
groupIndexes.Add(i)
End If
Next i
End Sub
Private Function GetParentGroupIndex(ByVal index As Integer) As Integer
checkedIndex = index
Return groupIndexes.FindLast(AddressOf CompareIndexex)
End Function
Private Function CompareIndexex(ByVal i As Integer) As Boolean
Return i < checkedIndex
End Function
Private Function IsRowIsFirstGroup(ByVal index As Integer) As Boolean
Return grid.IsGroupRow(index - 1)
End Function
End Class
See Also