SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题
转:http://blog.csdn.net/miragesky2049/article/details/7204882
SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题
1、实现效果如下:
点击各个节点进入相应的链接

2、测试列表:

3、创建解决方案及webpart,代码如下所示
- 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;//设置相邻节点的垂直间距
- tvList.ShowExpandCollapse = false;//不显示展开节点指示符,注:详细查看问题部分
- 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列表数据
- /// </summary>
- /// <param name="ParentID">上一级导航ID</param>
- /// <param name="Level">所在树形的级别</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["标题"].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>
- /// 递归绑定子节点内容
- /// </summary>
- /// <param name="CurrentNode">当前节点</param>
- /// <param name="ParentID">上一级导航ID</param>
- /// <param name="Level">所在树形的级别</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["标题"].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);//递归读取列表,绑定到子节点
- 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;//设置相邻节点的垂直间距
tvList.ShowExpandCollapse = false;//不显示展开节点指示符,注:详细查看问题部分
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列表数据
/// </summary>
/// <param name="ParentID">上一级导航ID</param>
/// <param name="Level">所在树形的级别</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["标题"].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>
/// 递归绑定子节点内容
/// </summary>
/// <param name="CurrentNode">当前节点</param>
/// <param name="ParentID">上一级导航ID</param>
/// <param name="Level">所在树形的级别</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["标题"].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);//递归读取列表,绑定到子节点
CurrentNode.ChildNodes.Add(childnode); }
} }
}
4、问题部分
当TreeView控件tvList的ShowExpandCollapse属性(是否显示展开节点指示符)设为true时,会出现如下错误

查了一些资料,笔者未能解决此问题,只能牺牲一些TreeView控件的显示效果,如有更好的方法,请不吝赐教!!
SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题的更多相关文章
- Web应用程序开发,基于Ajax技术的JavaScript树形控件
感谢http://www.cnblogs.com/dgrew/p/3181769.html#undefined 在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用, ...
- SharePoint 沙盒解决方案 VS 场解决方案
博客地址 http://blog.csdn.net/foxdave 最近看书正好看到了关于沙盒解决方案的介绍,便整理记录一下. 虽然沙盒解决方案已经在最新的SharePoint开发中被否决弃用了(被A ...
- 沙盒解决方案解决SharePoint 2013 以其他身份登陆的问题
众所周知,SharePoint 2013没有像SharePoint 2010那样有一个叫"以其他身份登录"的菜单项. 当然解决方案也很多,比如你可以直接修改Welcome.ascx ...
- SharePoint 2013 沙盒解决方案不能激活(激活按钮不可用)
把沙盒解决方案上传到目标站点的"解决方案"库中,发现"激活"按钮是灰掉的,不可用. 首先,我想到的是权限不足,所以 "以管理员身份"启动IE ...
- SharePoint 2010 使用沙盒解决方案隐藏页面中的”元素”
起因: 一朋友问我如何隐藏SharePoint 2010中"回收站"和"所有网站内容".我告诉他需要写点css,然后他就蒙圈了(他是英文专业). 解决方案: 一 ...
- seccomp沙盒逃逸基础——沙盒的规则编写
seccomp沙盒逃逸基础--沙盒的规则编写 引入: 安全计算模式 seccomp(Secure Computing Mode)是自 Linux 2.6.10 之后引入到 kernel 的特性.一切都 ...
- 葡萄城首席架构师:前端开发与Web表格控件技术解读
讲师:Issam Elbaytam,葡萄城集团全球首席架构师(Chief Software Architect of GrapeCity Global).曾任 Data Dynamics.Inc 创始 ...
- SNF开发平台WinForm之三-开发-单表选择控件创建-SNF快速开发平台3.3-Spring.Net.Framework
3.1运行效果: 3.2开发实现: 3.2.1 这个开发与第一个开发操作步骤是一致的,不同之处就是在生成完代码之后,留下如下圈红程序,其它删除. 第一个开发地址:开发-单表表格编辑管理页面 http: ...
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列4-Tab控件页面的动态加载
在前面介绍的几篇关于CRM系统的开发随笔中,里面都整合了多个页面的功能,包括多文档界面,以及客户相关信息的页面展示,这个模块就是利用DevExpress控件的XtraTabPage控件的动态加载实现的 ...
随机推荐
- /etc/sysconfig/目录详解
/etc/sysconfig/目录包括了在红帽企业LINUX下各种系统配置文件,以下是在/etc/sysconfig/目录下的文件列表如图: 500)this.width=500;"> ...
- OC 消息传递机制
消息传递(message passing)的概念是Smalltalk语言的核心原则之一,有时Smalltalk和Objective-C被称为面向消息的语言,通常“消息”一词的含义和“方法”是相同的. ...
- c语言中数组相关问题
c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...
- [Java][20160707]Java语言介绍
Java最早的名称叫"oak"后来改名叫"Java". Java最早是属于"Sun"公司的, 后来被"Oracle"公司 ...
- JNI学习总结
JNI学习总结 标签(空格分隔): java JNI:Java Native Interface,是一种通过java调用本地方法的技术(当然也可以反过来),随着JDK版本的提升,JNI的效率也一直在提 ...
- [翻译][MVC 5 + EF 6] 1:创建数据模型
原文:Getting Started with Entity Framework 6 Code First using MVC 5 1.新建MVC项目: 2.修改Views\Shared\_Layou ...
- WebStorm快捷键收集
1.webstorm快捷键: IntelliJ-Idea 的快捷键 Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*…*/ ) Shift+F6 重构-重命名 Ctrl+X 删除行 C ...
- 使用localstorage及js模版引擎 开发 m站设想
目前 m站开发的方式,依然请求完整的html,这样造成的问题就是每次请求的数据量过大过多,在没有wifi的情况下,导致页面打开的速度很慢,耗费的流量也较多:访问m站的多是移动端设备,其浏览器的版本都较 ...
- html5异步上传图片显示上传文件进度条
<html> <head> </head> <body> <p> emo_album_id:<input type="tex ...
- Linux-Tcp-IP
/* tcpcli.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include ...