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 に答える