子行も含んだ全ての行をループさせる効率的な方法は再帰呼び出しを使用することです。このトピックでは実際の実装として、TraverseAllRowsHelper  を実装します。

using Infragistics.Win.UltraWinGrid;
using System;
using System.Data;
using System.Windows.Forms;

private void button1_Click(object sender, EventArgs e)
{
    int rowsCount = 0;
    int groupByRowsCount = 0;

    // ヘルパーメソッドを呼び出します
    TraverseAllRowsHelper(this.ultraGrid1.Rows, ref rowsCount, ref groupByRowsCount);

    MessageBox.Show("UltraGrid の行数: " + rowsCount.ToString() + " グループ化行: " + groupByRowsCount.ToString());
}

private void TraverseAllRowsHelper(RowsCollection rows, ref int rowsCount, ref int groupByRowsCount)
{
    foreach (UltraGridRow row in rows)
    {
        if (row is UltraGridGroupByRow)
        {
            UltraGridGroupByRow groupByRow = (UltraGridGroupByRow)row;
            groupByRowsCount++;
        }
        else
        {
            rowsCount++;
        }

        if (null != row.ChildBands)
        {
            foreach (UltraGridChildBand childBand in row.ChildBands)
            {
                this.TraverseAllRowsHelper(childBand.Rows, ref rowsCount, ref groupByRowsCount);
            }
        }
    }
}

 

サンプル

 

Tagged:

製品について

Ultimate UI for Windows Forms