2011-06-19 42 views
0

我有一個想CheckboxListASP.NET這是我使用的東西轉換爲TreeViewjsTree。這可能嗎?節點嵌套深達四個級別複選框列表裏面複選框列表。是否有可能神奇地將它們變成TreeView,或者我需要在代碼隱藏中整天與JS一起修補嗎?的CheckBoxList的TreeView

回答

1

假設你可以計算出「深度」每一個節點,你可以將下面的代碼添加到的OnPreRender並會顯示您的項目層次:

protected void overrided OnPreRender() 
{ 
    lstItems.Items.Do(a=> 
    { 
     var item = // get item from a.Value 
     for(var i = 0; i< item.Depth; i++) 
     { 
      a.Text = "<span class='spacer'></span>" + a.Text; 
     } 
    }); 
} 

,並添加以下規則將樣式表:

span.spacer { width:20px; } 

但如果你想有摺疊/展開功能,您將需要添加,我不會在這裏包括一些JavaScript操作(也保持簡單)

P.S.添加到lstItems的項目是基於層次結構正確排序的,這一點很重要。解決方案,我建議是使用下面的方法爲您的數據源的排序關鍵字:

public string GetFullPath() 
{ 
    if(Parent == null) return Key; 
    return Parent.GetFullPath() + ">" + Key; 
} 

其中,key是一個獨特的領域(在一個單親的情況下)。 - 它可以是名稱,順序等。

+0

有趣的選項,但我最終與RadTreeView一起去。它爲最少量的工作提供了最大的靈活性(可惜不是免費的) – Echilon

+0

是的,不是免費的,這是我採用這種方法的主要原因。雖然如果你實現了這一次(作爲擴展方法或其他),你可以永遠使用它。 –