我想在UltraWinGrid的InitializeRow事件中根据当前行值禁用其他/不同的行

本文关键字:其他 UltraWinGrid InitializeRow 事件 | 更新日期: 2023-09-27 17:49:18

对于在UltraWinGrid中禁用行,我知道我们可以使用这个逻辑

e.Row。激活=激活。NoEdit或e.Row.Activation =激活。禁用

但是我想根据当前行值禁用其他行

我想在UltraWinGrid的InitializeRow事件中根据当前行值禁用其他/不同的行

您可以通过遍历当前行RowsCollection,转到子带行RowsCollections或转到父行RowsCollection来访问网格中的其他行。要访问这些集合中的任何一个,您可以在InitializeRow事件中使用如下代码:

   private void UltraGrid1_InitializeRow(object sender, InitializeRowEventArgs e)
    {
        //  Get the current row RowsCollection
        var currentRowsCollection = e.Row.ParentCollection;
        //  Get the current row child bands rows collections
        if(e.Row.ChildBands != null)
        {
            foreach(UltraGridChildBand childBand in e.Row.ChildBands)
            {
                var childRowsCollection = childBand.Rows;
            } 
        }
        //  Get the parent row RowsCollection
        if(e.Row.HasParent())
        {
            var parentRowsCollection = e.Row.ParentRow.ParentCollection;
        }
    }

到达必需的行集合后,您可以通过索引获得所需的行。然而,在InitializeRow事件中这样做可能有点棘手,因为您可能有GroupByRows, SummaryRows等。因此,您可能需要首先检查行e.Row是什么类型,或者您可以修改您的应用程序逻辑。