SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题...
生活随笔
收集整理的這篇文章主要介紹了
SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题...
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
轉(zhuǎn):http://blog.csdn.net/miragesky2049/article/details/7204882
SharePoint2010沙盒解決方案基礎(chǔ)開發(fā)——關(guān)于TreeView樹形控件讀取列表數(shù)據(jù)(樹形導(dǎo)航)的webpart開發(fā)及問(wèn)題
1、實(shí)現(xiàn)效果如下:
點(diǎn)擊各個(gè)節(jié)點(diǎn)進(jìn)入相應(yīng)的鏈接
2、測(cè)試列表:
3、創(chuàng)建解決方案及webpart,代碼如下所示
[html] view plaincopyprint?- using?System;??
- using?System.ComponentModel;??
- using?System.Web;??
- using?System.Web.UI;??
- using?System.Web.UI.WebControls;??
- using?System.Web.UI.WebControls.WebParts;??
- using?Microsoft.SharePoint;??
- using?Microsoft.SharePoint.WebControls;??
- //添加引用??
- using?System.Xml.Serialization;??
- using?System.Linq;??
- using?System.Data;??
- ??
- namespace?TestTreeView.TestTreeView??
- {??
- ????[ToolboxData("<{0}:WPToolPaneTest?runat=server></{0}:TestTreeView>"),?XmlRoot(Namespace?=?"TestTreeView")]定義Toolbox?data????
- ????public?class?TestTreeView?:System.Web.UI.WebControls.WebParts.WebPart??
- ????{??
- ????????TreeView?tvList?=?new?TreeView();??
- ??
- ????????protected?override?void?CreateChildControls()??
- ????????{??
- ????????????tvList.NodeStyle.NodeSpacing?=?5;//設(shè)置相鄰節(jié)點(diǎn)的垂直間距??
- ????????????tvList.ShowExpandCollapse?=?false;//不顯示展開節(jié)點(diǎn)指示符,注:詳細(xì)查看問(wèn)題部分??
- ????????????ListBind(0,?0);??
- ????????????this.Controls.Add(tvList);??
- ????????}??
- ??
- ????????protected?override?void?RenderContents(HtmlTextWriter?writer)??
- ????????{??
- ????????????writer.Write("<div?style='?border:2px?solid?#CCCCCC;?width:600px'><table?cellpadding='0'?cellspacing='0'?width='100%'><tr><td?style='?width:20%;?vertical-align:top'><div?style='?margin-top:10px;margin-left:5px'>");??
- ????????????this.tvList.RenderControl(writer);??
- ????????????writer.Write("</div></td></tr></table></div>");??
- ????????}??
- ??
- ????????///?<summary>??
- ????????///?綁定TreeViewList列表數(shù)據(jù)??
- ????????///?</summary>??
- ????????///?<param?name="ParentID">上一級(jí)導(dǎo)航ID</param>??
- ????????///?<param?name="Level">所在樹形的級(jí)別</param>??
- ????????private?void?ListBind(int?ParentID,?int?Level)??
- ????????{??
- ????????????SPSite?site?=?SPContext.Current.Site;??
- ????????????SPWeb?web?=?SPContext.Current.Web;??
- ????????????SPList?list?=?web.Lists["TreeViewList"];??
- ????????????var?query?=?from?SPListItem?item?in?list.Items?where?item["ParentID"].ToString()?==?ParentID.ToString()?&&?item["Level"].ToString()?==?Level.ToString()?select?item;??
- ????????????foreach?(SPListItem?item?in?query)??
- ????????????{??
- ????????????????TreeNode?parentnode?=?new?TreeNode();??
- ????????????????parentnode.Text?=?item["標(biāo)題"].ToString();??
- ????????????????parentnode.Value?=?item["ID"].ToString();??
- ????????????????parentnode.ImageUrl?=?"/_layouts/images/folder.gif";??
- ????????????????SPFieldUrlValue?url=new?SPFieldUrlValue(item["Url"].ToString());??
- ????????????????parentnode.NavigateUrl?=?url.Url;??
- ????????????????NodesBind(parentnode,Int32.Parse(item["ID"].ToString()),Int32.Parse(item["Level"].ToString())+1);??
- ????????????????tvList.Nodes.Add(parentnode);??
- ????????????}??
- ????????}??
- ??
- ????????///?<summary>??
- ????????///?遞歸綁定子節(jié)點(diǎn)內(nèi)容??
- ????????///?</summary>??
- ????????///?<param?name="CurrentNode">當(dāng)前節(jié)點(diǎn)</param>??
- ????????///?<param?name="ParentID">上一級(jí)導(dǎo)航ID</param>??
- ????????///?<param?name="Level">所在樹形的級(jí)別</param>??
- ????????private?void?NodesBind(TreeNode?CurrentNode,?int?ParentID,?int?Level)??
- ????????{??
- ????????????SPSite?site?=?SPContext.Current.Site;??
- ????????????SPWeb?web?=?SPContext.Current.Web;??
- ????????????SPList?list?=?web.Lists["TreeViewList"];??
- ????????????var?query?=?from?SPListItem?item?in?list.Items?where?item["ParentID"].ToString()?==?ParentID.ToString()?&&?item["Level"].ToString()?==?Level.ToString()?select?item;??
- ????????????foreach?(SPListItem?item?in?query)??
- ????????????{??
- ????????????????TreeNode?childnode?=?new?TreeNode();??
- ????????????????childnode.Text?=?item["標(biāo)題"].ToString();??
- ????????????????childnode.Value?=?item["ID"].ToString();??
- ????????????????SPFieldUrlValue?url?=?new?SPFieldUrlValue(item["Url"].ToString());??
- ????????????????childnode.NavigateUrl?=?url.Url;??
- ????????????????childnode.ImageUrl?=?"/_layouts/images/folder.gif";??
- ????????????????NodesBind(childnode,?Int32.Parse(item["ID"].ToString()),?Int32.Parse(item["Level"].ToString())?+?1);//遞歸讀取列表,綁定到子節(jié)點(diǎn)??
- ????????????????CurrentNode.ChildNodes.Add(childnode);??
- ??????????????????
- ????????????}??
- ????????}??
- ??
- ????}??
- }??
using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
//添加引用
using System.Xml.Serialization;
using System.Linq;
using System.Data;namespace TestTreeView.TestTreeView
{[ToolboxData("<{0}:WPToolPaneTest runat=server></{0}:TestTreeView>"), XmlRoot(Namespace = "TestTreeView")]定義Toolbox data public class TestTreeView :System.Web.UI.WebControls.WebParts.WebPart{TreeView tvList = new TreeView();protected override void CreateChildControls(){tvList.NodeStyle.NodeSpacing = 5;//設(shè)置相鄰節(jié)點(diǎn)的垂直間距tvList.ShowExpandCollapse = false;//不顯示展開節(jié)點(diǎn)指示符,注:詳細(xì)查看問(wèn)題部分ListBind(0, 0);this.Controls.Add(tvList);}protected override void RenderContents(HtmlTextWriter writer){writer.Write("<div style=' border:2px solid #CCCCCC; width:600px'><table cellpadding='0' cellspacing='0' width='100%'><tr><td style=' width:20%; vertical-align:top'><div style=' margin-top:10px;margin-left:5px'>");this.tvList.RenderControl(writer);writer.Write("</div></td></tr></table></div>");}/// <summary>/// 綁定TreeViewList列表數(shù)據(jù)/// </summary>/// <param name="ParentID">上一級(jí)導(dǎo)航ID</param>/// <param name="Level">所在樹形的級(jí)別</param>private void ListBind(int ParentID, int Level){SPSite site = SPContext.Current.Site;SPWeb web = SPContext.Current.Web;SPList list = web.Lists["TreeViewList"];var query = from SPListItem item in list.Items where item["ParentID"].ToString() == ParentID.ToString() && item["Level"].ToString() == Level.ToString() select item;foreach (SPListItem item in query){TreeNode parentnode = new TreeNode();parentnode.Text = item["標(biāo)題"].ToString();parentnode.Value = item["ID"].ToString();parentnode.ImageUrl = "/_layouts/images/folder.gif";SPFieldUrlValue url=new SPFieldUrlValue(item["Url"].ToString());parentnode.NavigateUrl = url.Url;NodesBind(parentnode,Int32.Parse(item["ID"].ToString()),Int32.Parse(item["Level"].ToString())+1);tvList.Nodes.Add(parentnode);}}/// <summary>/// 遞歸綁定子節(jié)點(diǎn)內(nèi)容/// </summary>/// <param name="CurrentNode">當(dāng)前節(jié)點(diǎn)</param>/// <param name="ParentID">上一級(jí)導(dǎo)航ID</param>/// <param name="Level">所在樹形的級(jí)別</param>private void NodesBind(TreeNode CurrentNode, int ParentID, int Level){SPSite site = SPContext.Current.Site;SPWeb web = SPContext.Current.Web;SPList list = web.Lists["TreeViewList"];var query = from SPListItem item in list.Items where item["ParentID"].ToString() == ParentID.ToString() && item["Level"].ToString() == Level.ToString() select item;foreach (SPListItem item in query){TreeNode childnode = new TreeNode();childnode.Text = item["標(biāo)題"].ToString();childnode.Value = item["ID"].ToString();SPFieldUrlValue url = new SPFieldUrlValue(item["Url"].ToString());childnode.NavigateUrl = url.Url;childnode.ImageUrl = "/_layouts/images/folder.gif";NodesBind(childnode, Int32.Parse(item["ID"].ToString()), Int32.Parse(item["Level"].ToString()) + 1);//遞歸讀取列表,綁定到子節(jié)點(diǎn)CurrentNode.ChildNodes.Add(childnode);}}}
}
?
4、問(wèn)題部分
當(dāng)TreeView控件tvList的ShowExpandCollapse屬性(是否顯示展開節(jié)點(diǎn)指示符)設(shè)為true時(shí),會(huì)出現(xiàn)如下錯(cuò)誤
查了一些資料,筆者未能解決此問(wèn)題,只能犧牲一些TreeView控件的顯示效果,如有更好的方法,請(qǐng)不吝賜教!!
?
轉(zhuǎn)載于:https://www.cnblogs.com/jackljf/p/3589213.html
總結(jié)
以上是生活随笔為你收集整理的SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux下发布的执行文件崩溃的问题定位
- 下一篇: 太TM难看了,我自己都看不下去了