SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题

SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题

分类: SharePoint2012-01-16 14:24 1295人阅读 评论(1) 收藏 举报

sharepoint2010queryurllistborder

SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题

1、实现效果如下:

点击各个节点进入相应的链接

2、测试列表:

3、创建解决方案及webpart,代码如下所示

[html] view plaincopy

  1. using System;
  2. using System.ComponentModel;
  3. using System.Web;
  4. using System.Web.UI;
  5. using System.Web.UI.WebControls;
  6. using System.Web.UI.WebControls.WebParts;
  7. using Microsoft.SharePoint;
  8. using Microsoft.SharePoint.WebControls;
  9. //添加引用
  10. using System.Xml.Serialization;
  11. using System.Linq;
  12. using System.Data;
  13. namespace TestTreeView.TestTreeView
  14. {
  15. [ToolboxData("<{0}:WPToolPaneTest runat=server></{0}:TestTreeView>"), XmlRoot(Namespace = "TestTreeView")]////定义Toolbox data
  16. public class TestTreeView :System.Web.UI.WebControls.WebParts.WebPart
  17. {
  18. TreeView tvList = new TreeView();
  19. protected override void CreateChildControls()
  20. {
  21. tvList.NodeStyle.NodeSpacing = 5;//设置相邻节点的垂直间距
  22. tvList.ShowExpandCollapse = false;//不显示展开节点指示符,注:详细查看问题部分
  23. ListBind(0, 0);
  24. this.Controls.Add(tvList);
  25. }
  26. protected override void RenderContents(HtmlTextWriter writer)
  27. {
  28. 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‘>");
  29. this.tvList.RenderControl(writer);
  30. writer.Write("</div></td></tr></table></div>");
  31. }
  32. /// <summary>
  33. /// 绑定TreeViewList列表数据
  34. /// </summary>
  35. /// <param name="ParentID">上一级导航ID</param>
  36. /// <param name="Level">所在树形的级别</param>
  37. private void ListBind(int ParentID, int Level)
  38. {
  39. SPSite site = SPContext.Current.Site;
  40. SPWeb web = SPContext.Current.Web;
  41. SPList list = web.Lists["TreeViewList"];
  42. var query = from SPListItem item in list.Items where item["ParentID"].ToString() == ParentID.ToString() && item["Level"].ToString() == Level.ToString() select item;
  43. foreach (SPListItem item in query)
  44. {
  45. TreeNode parentnode = new TreeNode();
  46. parentnode.Text = item["标题"].ToString();
  47. parentnode.Value = item["ID"].ToString();
  48. parentnode.ImageUrl = "/_layouts/images/folder.gif";
  49. SPFieldUrlValue url=new SPFieldUrlValue(item["Url"].ToString());
  50. parentnode.NavigateUrl = url.Url;
  51. NodesBind(parentnode,Int32.Parse(item["ID"].ToString()),Int32.Parse(item["Level"].ToString())+1);
  52. tvList.Nodes.Add(parentnode);
  53. }
  54. }
  55. /// <summary>
  56. /// 递归绑定子节点内容
  57. /// </summary>
  58. /// <param name="CurrentNode">当前节点</param>
  59. /// <param name="ParentID">上一级导航ID</param>
  60. /// <param name="Level">所在树形的级别</param>
  61. private void NodesBind(TreeNode CurrentNode, int ParentID, int Level)
  62. {
  63. SPSite site = SPContext.Current.Site;
  64. SPWeb web = SPContext.Current.Web;
  65. SPList list = web.Lists["TreeViewList"];
  66. var query = from SPListItem item in list.Items where item["ParentID"].ToString() == ParentID.ToString() && item["Level"].ToString() == Level.ToString() select item;
  67. foreach (SPListItem item in query)
  68. {
  69. TreeNode childnode = new TreeNode();
  70. childnode.Text = item["标题"].ToString();
  71. childnode.Value = item["ID"].ToString();
  72. SPFieldUrlValue url = new SPFieldUrlValue(item["Url"].ToString());
  73. childnode.NavigateUrl = url.Url;
  74. childnode.ImageUrl = "/_layouts/images/folder.gif";
  75. NodesBind(childnode, Int32.Parse(item["ID"].ToString()), Int32.Parse(item["Level"].ToString()) + 1);//递归读取列表,绑定到子节点
  76. CurrentNode.ChildNodes.Add(childnode);
  77. }
  78. }
  79. }
  80. }

4、问题部分

当TreeView控件tvList的ShowExpandCollapse属性(是否显示展开节点指示符)设为true时,会出现如下错误

查了一些资料,笔者未能解决此问题,只能牺牲一些TreeView控件的显示效果,如有更好的方法,请不吝赐教!!

时间: 2025-01-15 07:42:58

SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题的相关文章

SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据,并以一定的格式显示(加css样式)

SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据,并以一定的格式显示(加css样式) 分类: SharePoint2011-12-22 15:13 1974人阅读 评论(2) 收藏 举报 sharepointcss2010classbordernull SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据,并以一定的格式显示(加css样式) 注:此实例无需添加数据控件,避免了一些繁琐的代码 实现效果如下: 读取数据和图片,并

Web应用程序开发,基于Ajax技术的JavaScript树形控件

感谢http://www.cnblogs.com/dgrew/p/3181769.html#undefined 在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用,它用来在Html页面上展现具有层次结构的数据项. 目前市场上常见的JavaScript框架及组件库中均包含自己的树形控件,例如jQuery.Dojo.YUI.Ext JS等,还有一些独立的树形控件,例如dhtmlxTree等,这些树形控件完美的解决了层次数据的展示问题. 展示离不开数据,树形控件主要

SharePoint 沙盒解决方案 VS 场解决方案

博客地址 http://blog.csdn.net/foxdave 最近看书正好看到了关于沙盒解决方案的介绍,便整理记录一下. 虽然沙盒解决方案已经在最新的SharePoint开发中被否决弃用了(被APP取代),但是我觉得一些简单的东西用也无妨,比如霖雨大神文章中提到的那种情景. 具体内容参阅"在 SharePoint 2013 中选择正确的 API 集". 我们先来回顾一下SharePoint开发接口历程 ●SharePoint 2007(2007之前的版本不是很熟悉,但应该是跟20

SharePoint 2013 沙盒解决方案不能激活(激活按钮不可用)

把沙盒解决方案上传到目标站点的"解决方案"库中,发现"激活"按钮是灰掉的,不可用. 首先,我想到的是权限不足,所以 "以管理员身份"启动IE,然后发现还是不能激活. 莫非是沙盒服务没启动?去查看:管理中心------系统设置-------管理服务器上的服务 果然是"Microsoft SharePoint Foundation Sandboxed Code Service"没有启动. 将其启动,然后就可以激活你的沙盒解决方案了

可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取)

可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) 分类: SharePoint2011-12-23 14:44 1584人阅读 评论(0) 收藏 举报 文档sharepointurl测试stringforms 可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) 1.在部署的sharepoint网站中新建一个名为“测试文档库”的文档库,并添加各级的子文件夹和子文件,用于测试 2.在VS2010中新建空

OS的沙盒机制 --基础知识

/* iOS的沙盒机制,应用只能访问自己应用目录下的文件. iOS不像android,没有SD卡概念,不能直接访问图像.视频等内容. iOS应用产生的内容,如图像.文件.缓存内容等都必须存储在自己的沙盒内. 默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录.  上面的完整路径为:用户->资源库->Application Support->iPhone Simulator->7.1->

葡萄城首席架构师:前端开发与Web表格控件技术解读

讲师:Issam Elbaytam,葡萄城集团全球首席架构师(Chief Software Architect of GrapeCity Global).曾任 Data Dynamics.Inc 创始人兼资深产品经理,个人研究方向主要为 MS.NET语言及平台.动态化系统构建,以及高性能大型分布式Web系统架构,主导了葡萄城多款畅销控件产品的系统架构与性能优化.   “25年来每天只休息4小时,除了日常作息时间,Issam不是在研究技术和产品,就是在去研究技术发展趋势的路上”这就是葡萄城同事对他

C#开发学习——web服务器端控件

Asp.net在客户端开发和web开发所用到的控件还是有很大的差别的,而且Web开发的界面是在浏览器中显示的,所以控件的设计都和前边学习HTML设计有联系,没有客户端开发那么简单,不过我们可以通过专门工具,来帮助我们开发.这篇博客,先简单总结各个控件的功能! 功能 控件 说明 属性 方法 事件 文本 Label 显示文本 Text       TextBox 接受用户的输入,文本/数字/日期等 Text/TextMode/AutoPostBack/Visible/Enable TextChang

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件.(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们.) ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行.控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件.这里控件容器就是