.NET 3.5環境下的樹型控制項for web form。
John.WebControls.Tree for .NET 3.5 RTM (←點擊下載)
:
該控制項繼承WebControl的TreeView,這個只是為了方便我們平時的小型開發而已(針對無限級的樹,單表ID和PID),資料量大於2萬的時候會比較卡。
HTML:
<johncontrols:treeview id="TreeView1" runat="server" navigateurlformat="page1.aspx?id={0},page2.aspx?xxx={0}&dsss={1},page3.aspx" navigateurlkey="ID,Text" rootparentid="0"></johncontrols:treeview>
Code:
string connString = @"Data Source=./SQLEXPRESS;AttachDbFilename=F:/JohnV3.0/wwwroot/Test/App_Data/BaseSystem.mdf;Integrated Security=True;User Instance=True";
DataSet ds = John.Commons.Utility.DbMSSQLUtility.ExecuteDataSet(connString, "SELECT * FROM t_baseMultiCode");
this.TreeView1.DataSource = ds;
this.TreeView1.DataBind();
至於上面代碼中的John.Commons.Utility.DbMSSQLUtility我發布過,大家可以找下。
重要的是下面的屬性
所有的Key屬性,都是資料庫的欄位名,代表了在每個位置的值,而根據需求,在NavigateUrl做了一些比較人性化一點的改動
因為每個節點的NavigateUrl可能是一樣,也可能是不一樣的。所以NavigateUrlFormat這個屬性可以根據需要去設定每一層節點的URLFormat,第一個代表第一層,最後一個代表他所在位置的層,以及後續的所有層。
下面是NavigateUrlFormat屬性的設定:
NavigateUrlKey的設定:
ID欄位的值將與format裡第一層的page1.aspx?id={0}結合,這樣寫應該容易懂點string.Format("page1.aspx?id={0}", value("ID"))
而第二層節點的xxx={0}也一樣與ID欄位結合
由於第一層只設定了一個tag所以text欄位被第一層忽略。
text欄位的值將結合到第二層的dss={1}中,string.Format("page2.aspx?xxx={0}&dsss={1}", value("ID", value(text)))
上面的代碼中其實是根本沒value這個方法的,只是為了大家明白控制項的工作原理寫出來的。
最終的效果就是上面的,圖中的狀態列顯示的地址就是第一層節點的地址。
是第二層的地址:
第三層以及後面的層:
http://www.cnblogs.com/Garnai/archive/2007/12/08/john-webcontrols-tree.html