0

我有一个绑定到自定义对象集合的 rad 网格,有时我会抓取这样的行索引:

e.Item.ItemIndexHierarchical

稍后,当我想检索该项目(如果它仍然存在)时,我使用它:

gvAgendaItems.Items(HierarchicalIndexKey)

问题是有时该项目不再存在 - 我对此表示满意 - 但我想优雅地跳过正在处理它可以找到的项目的代码部分。就目前而言,使用不再有效的键搜索项目会引发异常,因此我不能只检查结果项目是否为空。

如何在不引发异常的情况下测试 HierarchicalIndexKey 是否仍然有效?

4

1 回答 1

0

我在 Telerik 文档中没有看到任何优雅的方法来做到这一点(不幸的是,只留下了生硬/低效的方法)。

您可以遍历项目并匹配HierarchicalIndexKey每个项目的ItemIndexHierarchical

int i = 0;
bool bIndexExists = false;
GridDataItem item = null;

for (i = 0; i <= gvAgendaItems.Items.Count - 1; i++) {
    bIndexExists = gvAgendaItems.Items(i).ItemIndexHierarchical == HierarchicalIndexKey;
    if (bIndexExists) {
        item = gvAgendaItems.Items(HierarchicalIndexKey);
        break;
    }
}

您可以将其包装在一个Try/Catch块中,然后默默地失败。

GridDataItem item = null;

try {
    item = gvAgendaItems.Items(HierarchicalIndexKey);
} catch (Exception ex) {
    //fail silently without throwing an exception.
}

对于较小的数据源,循环将更有效,而对于较大的数据源,包装将更有效(断点是循环遍历集合比引发异常所需的时间更多)。

希望我有一个更好的答案,但我希望这会有所帮助。

于 2012-10-24T19:07:33.343 回答