最近我在用treeview+自定義SiteMapDataSource控制元件讀取資料庫資料做導航列。
最近我在用treeview+自定義SiteMapDataSource控制元件讀取資料庫資料做導航列。
如不消除本頁面已有的引數,試一下在自定義SiteMapDataSource控制元件的 BuildSiteMapRecurse 方法中
給string url新增你的引數
HttpContext context = new HttpContext();
context.Request.QueryString....新增引數。
我的程式碼如下:
自定義SiteMapDataSource控制元件:
AddNode(node, parentNode);
BuildSiteMapRecurse(siteMapTable, node);
}
}
}
}
導航地圖:
如不消除本頁面已有的引數,試一下在自定義SiteMapDataSource控制元件的 BuildSiteMapRecurse 方法中
給string url新增你的引數
HttpContext context = new HttpContext();
context.Request.QueryString....新增引數。
我的程式碼如下:
- C# code
- <asp:TreeView id="treeCategories" ImageSet="Msdn" DataSourceID="srcSiteMap" AutoGenerateDataBindings="false" SelectedNodeStyle-BackColor="#CCCCCC" Runat="server" OnDataBound="treeCategories_DataBound"> <DataBindings> <asp:TreeNodeBinding TextField="Title" ValueField="Key" SelectAction="Select" /> </DataBindings> </asp:TreeView> <asp:SiteMapDataSource id="srcSiteMap" StartingNodeUrl="~/Products.aspx" Runat="server" />
自定義SiteMapDataSource控制元件:
- C# code
- using System; using System.Collections.Specialized; using System.Web.Configuration; using System.Data; using System.Data.SqlClient; using System.Web; using System.Web.Caching; namespace AspNetUnleashed { /// <summary> /// Returns Site Map from database /// </summary> public class CategorySiteMapProvider : StaticSiteMapProvider { private bool _isInitialized = false; private SiteMapNode _rootNode; private string _connectionString; private string _navigateUrl; private string _idFieldName; /// <summary> /// Loads configuration settings from Web configuration file /// </summary> public override void Initialize(string name, NameValueCollection attributes) { if (_isInitialized) return; base.Initialize(name, attributes); // Get database connection string from config file string connectionStringName = attributes["connectionStringName"]; if (String.IsNullOrEmpty(connectionStringName)) throw new Exception("You must provide a connectionStringName attribute"); _connectionString = WebConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; if (String.IsNullOrEmpty(_connectionString)) throw new Exception("Could not find connection string " + connectionStringName); // Get navigateUrl from config file _navigateUrl = attributes["navigateUrl"]; if (String.IsNullOrEmpty(_navigateUrl)) throw new Exception("You must provide a navigateUrl attribute"); // Get idFieldName from config file _idFieldName = attributes["idFieldName"]; if (String.IsNullOrEmpty(_idFieldName)) _idFieldName = "id"; _isInitialized = true; } /// <summary> /// Retrieve the root node by building the Site Map /// </summary> protected override SiteMapNode GetRootNodeCore() { HttpContext context = HttpContext.Current; return BuildSiteMap(); } /// <summary> /// Resets the Site Map by deleting the /// root node. This causes the BuildSiteMap() /// method to rebuild the Site Map /// </summary> public void ResetSiteMap() { _rootNode = null; } /// <summary> /// Build the Site Map by retrieving /// records from database table /// </summary> /// <returns></returns> public override SiteMapNode BuildSiteMap() { // Only allow the Site Map to be created by a single thread lock (this) { if (_rootNode == null) { // Show trace for debugging HttpContext context = HttpContext.Current; HttpContext.Current.Trace.Warn("Loading category site map from database"); // Clear current Site Map Clear(); // Load the database data DataTable tblSiteMap = GetSiteMapFromDB(); // Get the root node _rootNode = GetRootNode(tblSiteMap); AddNode(_rootNode); // Build the child nodes BuildSiteMapRecurse(tblSiteMap, _rootNode); } return _rootNode; } } /// <summary> /// Load the contents of the database table /// that contains the Site Map /// </summary> private DataTable GetSiteMapFromDB() { string selectCommand = "SELECT Id,ParentId,Title,Description FROM Categories"; SqlDataAdapter dad = new SqlDataAdapter(selectCommand, _connectionString); DataTable tblSiteMap = new DataTable(); dad.Fill(tblSiteMap); return tblSiteMap; } /// <summary> /// Get the root node from the DataTable /// </summary> private SiteMapNode GetRootNode(DataTable siteMapTable) { DataRow[] results = siteMapTable.Select("ParentId IS NULL"); if (results.Length == 0) throw new Exception("No root node in database"); DataRow rootRow = results[0]; return new SiteMapNode(this, rootRow["Id"].ToString(), _navigateUrl, rootRow["title"].ToString(), rootRow["description"].ToString()); } /// <summary> /// Recursively build the Site Map from the DataTable /// </summary> private void BuildSiteMapRecurse(DataTable siteMapTable, SiteMapNode parentNode) { DataRow[] results = siteMapTable.Select("ParentId=" + parentNode.Key); foreach (DataRow row in results) { string url = String.Format("{0}?{1}={2}", _navigateUrl, _idFieldName, row["id"]); SiteMapNode node = new SiteMapNode(this, row["Id"
AddNode(node, parentNode);
BuildSiteMapRecurse(siteMapTable, node);
}
}
}
}
導航地圖:
- C# code
- <?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="~/default.aspx" title="Home " description="Home page"> <siteMapNode provider="CategorySiteMapProvider" /> <siteMapNode url="~/shoppingcart.aspx" title="Shopping Cart" description="View Shopping Cart" /> <siteMapNode url="~/contactinfo.aspx" title="Contact Us" description="Contact us by phone or email" /> <siteMapNode siteMapFile="~/manage/web.sitemap" /> </siteMapNode> </siteMap>
相關文章
- 利用反射讀取資料庫資料反射資料庫
- sqlserver讀取oracle資料庫資料SQLServerOracle資料庫
- eazyexcel 讀取excel資料插入資料庫Excel資料庫
- GridView自定義列資料繫結,和自定義頒功能View
- 自定義註解完成資料庫切庫資料庫
- flutter 自定義tab導航-頂部導航-底部導航Flutter
- iOS自定義控制元件:自定義TableView、CollectionView空資料佔點陣圖iOS控制元件View
- ajax讀取資料庫資料程式碼例項資料庫
- 做資料庫分離讀寫時,sqlServer資料庫資料同步的問題:資料庫SQLServer
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 【jackyrong】asp.net 2.0中使用sitemapDATAsource做頁面導航ASP.NET
- jquery實現的讀取dat-*自定義資料程式碼例項jQuery
- Kettle 從資料庫讀取資料存到變數中資料庫變數
- vue 自定義指令實現資料拉取更新Vue
- 自定義開發資料庫升級程式資料庫
- 瀚高資料庫自定義操作符'!~~'資料庫
- 在資料庫中自定義外部函式資料庫函式
- uniapp自定義導航欄APP
- 自定義資料型別資料型別
- 讀取mysq資料庫l資料,並使用dataview顯示資料庫View
- 大資料導航新版上線大資料
- 讀取CSV資料
- excel 資料讀取Excel
- java poi讀取Excel資料 插入到SQL SERVER資料庫中JavaExcelSQLServer資料庫
- 微信小程式自定義導航欄微信小程式
- ios自定義簡約導航欄iOS
- DM自定義資料型別資料型別
- PyTorch 自定義資料集PyTorch
- 多種方式讀取 MySQL 資料庫配置MySql資料庫
- 使用openpyxl庫讀取Excel檔案資料Excel
- android直接讀取資料庫檔案Android資料庫
- ColdFusion如何從資料庫讀取資訊例子資料庫
- 【MySQL】自定義資料庫連線池和開源資料庫連線池的使用MySql資料庫
- 廣義資料庫資料庫
- 自定義帶監控的資料庫連線池資料庫
- 在VC++中建立自定義資料庫類 (轉)C++資料庫
- 關於讀取資料庫配置資原始檔問題資料庫
- 現在後端都在用什麼資料庫儲存資料?後端資料庫