Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
175
ParentDataRow and IsGroupByRow
posted

I often need to traverse a multi-band grid to do various things. Many times I need to refer to the parent row but only if that row is not a GroupBy row. In that case I need to refer to .ParentRow.ParentRow. So, what I usually do is something like:

if (row.IsGroupByRow)

   DoSomethingWith(row.ParentRow.ParentRow);

else

  DoSomethingWith(row.ParentRow);

Although a big clunky, it works. There are some cases, however, when this approach won't work such as when I'm selecting the rows with a lambda expression such as:

var MyStuff = from UltraGridRow row in MyGrid.DisplayLayout.Bands["MyBand"].GetRowEnumerator(GridRowType.DataRow)

where <some filter>

select MyStuff

{

   row.Cells["MyCell 0"].Value.ToString();

   row.ParentRow.Cells["SomeCell"].Value.ToString();

}

Now, if that ParentRow is a GroupBy, then it won't work. It can be overcome using the ? : operator but again, it's clunky.

The feature I'd like to see, if it doesn't already exist, is a property on the row called ParentDataRow which would return the first parent row that is not a GroupBy Row.

I've created an extension method which accomplishes this.

    public static class UltraGridRowEx
    {
        public static UltraGridRow ParentDataRow(this UltraGridRow row)
        {
            if (row.ParentRow.IsGroupByRow)
                return ParentDataRow(row.ParentRow);
            else
                return row.ParentRow;
        }
    }

It would be nice, however, if it were built in.

Parents
No Data
Reply
  • 53790
    posted

    Hello Kylemwhite

    Thank you for your feedback and for sharing your solution with the community. Please do not hesitate to contact us if you need any assistance.

    Regards

Children
No Data