2016-07-08 14 views
0

に基づいて私はASPを持っています。ここに私の現在のコードです。私も同じコードを使ってondataboundを試しましたが、どちらもうまくいきません。ツリービューの変更LeafNodeStyle.ImageUrlは、ファイル拡張子

protected void MyTree_TreeNodeExpanded(object sender, TreeNodeEventArgs e) 
{ 
    string fileExt = Path.GetExtension(e.Node.Selected.ToString()); 
    if (fileExt == ".pdf") 
    { 

     MyTree.LeafNodeStyle.ImageUrl = "/Images/icons/pdf_icon.png"; 
    } 
    else 
    { 
     MyTree.LeafNodeStyle.ImageUrl = "/Images/icons/document_icon.png"; 
    } 
} 

上記のスクリプトは、ファイル構造をループしません。下の例では、pdfファイルにはpdfアイコンが、残りにはドキュメントアイコンが表示されます。

enter image description here

答えて

1

Server.MapPathのは、物理的にマップする相対または仮想パスを指定するが、IMAGEURL値は、絶対URLまたは相対URLでなければなりません。 e.Nodeあなたはあなたの例では "看護" ノードで、拡張ノードを返しますが、 - あなたが

MyTree.LeafNodeStyle.ImageUrl = "/Images/icons/pdf_icon.png"; 

編集

MyTree.LeafNodeStyle.ImageUrl = Server.MapPath("~/Images/icons/pdf_icon.png"); 

を交換し に必要
e.Node.ChildNodesをループする必要があります。
- e.Node.Selectedノードテキストを取得するには、e.Node.Textを使用するブール値を返します。
- MyTree.LeafNodeStyle.ImageUrlツリー内のすべてのリーフスタイルが変更されるので、すべてのリーフに対してImageUrlを変更する必要があります。


このコードは、仕事をしなければなりません。

protected void MyTree_TreeNodeExpanded(object sender, TreeNodeEventArgs e) 
    { 
     for (int i = 0; i < e.Node.ChildNodes.Count; i++) 
     { 
      if (e.Node.ChildNodes[i].ChildNodes.Count != 0) 
       continue; 
      string fileExt = Path.GetExtension(e.Node.ChildNodes[i].Text); 

      if (fileExt == ".pdf") 
      { 
       e.Node.ChildNodes[i].ImageUrl = "/Images/icons/pdf_icon.png"; 
      } 
      else 
      { 
       e.Node.ChildNodes[i].ImageUrl = "/Images/icons/document_icon.png"; 
      } 
     } 
    } 
+0

質問をよりよく説明するために詳細を追加しました –

関連する問題