私はkenticoアプリケーションを使用しています。そこには親のノードIDまたは親のparentnodeidが含まれています。私たちは親ノードと呼ばれるメンバーシップを持っていると子供1内ブログと呼ばれて見ることができますツリー内の親ノードIDに基づいてすべての子データを削除
この写真で: は、以下のスクリーンショットです。ブログの下にあるノードIDは、29子を持つ583です。今私はコードを実行して、その親の下にあるすべての子データをリストとして取得しています。
は、今私はそのparentnodeidまたは親の親ノードID 583(ブログ)でリストからすべての子データを削除する必要があります。 は、以下のスクリーンショットです。以下は
すべての親と子項目のリストを取得するために使用するコードです:私たちは、コードchildNodeIdの上に見ることができるように
TreeProvider tree = new TreeProvider();
var childNodeDataSet = tree.SelectNodes(childNodeId, null, SiteContext.CurrentSiteName);
var getAllChildItems = childNodeDataSet.Items[0].AllChildren;
var getItems = getAllChildItems.ToList().OrderBy(a=>a.NodeAliasPath);
私は、リストから、一致する親項目を削除するには、このコードを試してみました:
string excludeFileName = "583, 683, 686, 687";
string[] arrStringList = excludeFileName.Split(',');
foreach (var excName in arrStringList)
{
getItems.RemoveAll(a => (a.NodeID == Convert.ToInt32(excName.Trim()) || a.NodeParentID == Convert.ToInt32(excName.Trim()))
|| (a.Parent.NodeID == Convert.ToInt32(excName.Trim()) || a.Parent.NodeParentID == Convert.ToInt32(excName.Trim()))
|| (a.Parent.Parent.NodeID == Convert.ToInt32(excName.Trim()) || a.Parent.Parent.NodeParentID == Convert.ToInt32(excName.Trim()))
|| (a.Parent.Parent.Parent.NodeID == Convert.ToInt32(excName.Trim()) || a.Parent.Parent.Parent.NodeParentID == Convert.ToInt32(excName.Trim())));
}
私は特定のノードがどのように多くのレベルを持って知っていれば、このコードは正常に動作しています。
しかし、ノードの一部にそのようなレベルがあまりない場合、このコードでは例外が発生します。
問題が見つかった場合は教えてください。
のように、方法でこれらのほとんどを持っています。投稿したいと思うのはコードなので、API呼び出しを正しく使用しているかどうかを確認することができます。 –
私は自分の質問を編集し、リストがどのように生成されているか理解するためのコードを追加しました。私はノードを削除するために使用したコードも追加しました。 –
それでは、正確な質問や問題は何ですか? –