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);
}
}
}
}
4、问题部分
当TreeView控件tvList的ShowExpandCollapse属性(是否显示展开节点指示符)设为true时,会出现如下错误
查了一些资料,笔者未能解决此问题,只能牺牲一些TreeView控件的显示效果,如有更好的方法,请不吝赐教!!
分享到:
相关推荐
SharePoint2010的沙盒解决方案
对MOSS结构开发中的沙盒解决方案进行了详解
iOS基础——数据存储之沙盒机制、Plist、Perference、归档、反归档
SDC沙盒机密数据保密系统技术白皮书 软件研发行业源代码加密防泄密解决方案
这是一个类似于沙盒的功能,在开发阶段我们的确称它为Sandboxed Solution,它将用户上传的解决方案放在沙盒中执行,保证服务器场的安全性,同时管理员可以控制这些代码占用资源的多少以免出现问题。 Web Analytic ...
一个简单的demo来获取沙盒的各个文件夹路径、写入简单的文件、读取简单的文件。
paypal沙盒测试环境开发文档,详细介绍,paypal 沙盒开发步骤.
sharepoint2010专业开发人员指南。 目录 概要 1 简介 1 新增功能摘要 2 开发人员在 SharePoint 上构建的关键类型的解决方案 3 在 SharePoint 上构建应用程序 3 业务协作应用程序 3 业务线应用程序数据的用户...
基于C#开发的沙盒游戏源码-课设项目.zip基于C#开发的沙盒游戏源码-课设项目.zip基于C#开发的沙盒游戏源码-课设项目.zip基于C#开发的沙盒游戏源码-课设项目.zip基于C#开发的沙盒游戏源码-课设项目.zip基于C#开发的...
某公司内部数据都有安全措施保护,但是对于出差或者回家办公人员来说,一直存在安全问题,如果为其购买笔记本,人手一个,成本又太高,如果让员工使用自己的电脑工作,接入公司网络又不安全,而员工电脑也不能安装...
沙箱安全系统解决方案设计-研华.pdf沙箱安全系统解决方案设计-研华.pdf沙箱安全系统解决方案设计-研华.pdf沙箱安全系统解决方案设计-研华.pdf沙箱安全系统解决方案设计-研华.pdf沙箱安全系统解决方案设计-研华.pdf...
介绍了NSManagerFile的几种常用的方法,简单易用,欢迎下载
Sandbox 沙盒 IOS 开发 缓存
技术处于国际领先的深信达公司研发的SDC(Secret Data Cage)机密数据保密系统,采用世界上最先进的第三代透明加密技术---内核级纵深立体沙盒加密技术,是专门为解决源代码,图纸,文档等机密数据泄密问题而设计的...
ios沙盒操作,封装好demo,导入即可使用。小牛一枚,封装的不好勿喷,请多多包含。
ios 沙盒如何操作,以及如何应用沙盒来存储文件,查询文件
该文档简述了在iOS开发过程中,沙盒机制的概念以及优势。
软件开发行业的产品以及核心模块的源代码属于核心机密,需要做防泄密保护,但是下面的现象非常普遍: 项目开发人员都在家自己备份了一份自己开发的,甚至全系统的源代码以及开发设计文档。 项目管理人员手中都掌握着...
区块链沙盒云白皮书 v1.0
PaaS沙盒机制原理分析.pdfPaaS沙盒机制原理分析.pdfPaaS沙盒机制原理分析.pdfPaaS沙盒机制原理分析.pdfPaaS沙盒机制原理分析.pdfPaaS沙盒机制原理分析.pdfPaaS沙盒机制原理分析.pdfPaaS沙盒机制原理分析.pdf