如何避免.Parent.Parent.Parent.等引用控制层次结构时?

Mat*_*tin 3 c# asp.net

我正在尝试修复这个丑陋的代码.

RadGrid gv = (RadGrid) (((Control) e.CommandSource).Parent.Parent.Parent.Parent.Parent);
Run Code Online (Sandbox Code Playgroud)

我经常需要找到第一个网格,它是刚刚引发事件的对象的父级的父级.

当布局改变并且父母的数量增加或减少时,上述趋势会破裂.

我不一定有控件ID,所以我不能使用FindControl().

有没有更好的方法来找到第一个父网格?

Joe*_*csy 12

Control parent = Parent;
while (!(parent is RadGrid))
{
    parent = parent.Parent;
}
Run Code Online (Sandbox Code Playgroud)