2012-03-20 15 views
0

私のページにはASP.NETツリービューがあります。ASP.NETツリービューコントロールは常にCheckedNodesリストにノードを追加します

public string GetSelectedTreeValues(TreeView tv) 
    { 
     string taxVal = string.Empty; 

     StringBuilder textBuilder = new StringBuilder(); 
     string lists = string.Empty; 
     string cleanedlists = string.Empty; 

     try 
     { 
      TreeNodeCollection checkedNodes = tv.CheckedNodes; 
      foreach (TreeNode tn in checkedNodes) 
      { 
       lists = textBuilder.Append(tn.ValuePath + ",").ToString(); 
      } 

      // removing any trailing commas 
      cleanedlists = lists.Substring(0, lists.Trim().Length - 1); 
     } 
     catch (Exception ex) 
     { 
      new ApplicationException("Error: Getting Tree Nodes", ex); 
     } 
     return cleanedlists; 
    } 

私は、ポストバックを行う私が選択した値を変更した場合、彼らは常に値のリストにを追加するときに問題がされています。私の分離コードでは、私は次のような方法があります。私は値のリストがをクリアすると思った、新しい値にリセットします。

コードを踏んで、CheckedNodesプロパティが、チェックされていないノードを削除せずにチェックしたノードを常にリストに追加していることがわかりました。

答えて

0

ツリービューバインディングを行うコードの部分を投稿できますか?

ページライフサイクルのどの時点でバインディングされ、GetSelectedTreeValuesが呼び出されますか?

することができます場合は、あなたが

 cleanedlists = string.Join(",", tv.CheckedNodes.Cast<TreeNode>().Select(tn => tn.ValuePath).ToArray()); 
+0

おかげで、JBLとtryブロックの内容を交換する必要があります!あなたのソリューションはうまくいきました - 値パスを使用して、ポストバック間でチェックされるノードを設定することができます! :D(これは私が達成する必要があったものです) – Tim

+0

私はあまりにも早く話しました...私はまだ* CheckedNodesコレクションに追加するツリービューで私は何をしているように見える。これは私にナッツを動かしている - ボックスのチェックを外すと値が更新されないのはなぜですか? – Tim

+0

@Tim:コードのこの部分に問題はないようです。ツリービューに関連して他の部分を投稿してください。 – jbl

関連する問題