Sharepoint 2010 - webpart treeview无法正常工作
问题描述:
您好我正在使用SharePoint 2010,并在webpart中创建树视图以显示文档库中的项目。此代码不适用于我,它显示在同一网络中的所有内容... 我希望能够指定使用哪个文档库。Sharepoint 2010 - webpart treeview无法正常工作
另外它放入重复节点,所以如果我去编辑页面,它会添加一个重复的,如果我离开编辑模式,它会添加另一个重复。
任何人都可以帮忙吗?
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using System.Web;
using System.IO;
namespace VisualWebPartProject1.VisualWebPart1
{
public partial class VisualWebPart1UserControl : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
SPWeb thisWeb = null;
TreeNode node;
using (thisWeb = SPContext.Current.Web)
{
//Add the Web's title as the display text for the tree node, and add the URL as the NavigateUri.
node = new TreeNode(thisWeb.Title, null, null, thisWeb.Url, "_self");
//The Visual Web Part has a treeview control called siteStructure.
siteStructure.Nodes.Add(node);
//Get a reference to the current node, so child nodes can be added in the correct position.
TreeNode parentNode = node;
//Iterate through the Lists collection of the Web.
/*
foreach (SPListItem item in myList.Items)
{
SPFieldUrlValue data = item["Url"] as SPFieldUrlValue;
// now you have data.Description, data.Url
node = new TreeNode(Path.GetFileName(data.Url), null, null, data.Url, "_self");
parentNode.ChildNodes.Add(node);
}
*/
foreach (SPList list in thisWeb.Lists)
{
if (!list.Hidden)
{
node = new TreeNode(list.Title, null, null, list.DefaultViewUrl, "_self");
parentNode.ChildNodes.Add(node);
}
}
foreach (SPWeb childWeb in thisWeb.Webs)
{
//Call our own helper function for adding each child Web to the tree.
addWebs(childWeb, parentNode);
childWeb.Dispose();
}
siteStructure.CollapseAll();
}
}
void addWebs(SPWeb web, TreeNode parentNode)
{
TreeNode node;
node = new TreeNode(web.Title, null, null, web.Url, "_self");
parentNode.ChildNodes.Add(node);
parentNode = node;
foreach (SPList list in web.Lists)
{
if (!list.Hidden)
{
node = new TreeNode(list.Title, null, null, list.DefaultViewUrl, "_self");
parentNode.ChildNodes.Add(node);
}
}
foreach (SPWeb childWeb in web.Webs)
{
//Call the addWebs() function from itself (i.e. recursively)
//to add all child Webs until there are no more to add.
addWebs(childWeb, parentNode);
childWeb.Dispose();
}
}
}
}
答
尝试的使用语句之前添加此:
If(node.Nodes.Count == 0) { // The rest of your code here }
答
添加WebProperties到你的WebPart到能够配置例如,你想改用硬编码的一个图书馆。在此属性中,您可以指定列表名称并读取它以加载此列表。
同时,为了避免在编辑多个插件等请添加代码的Page_Load事件里面里面
if (!Page.IsPostBack)
{
Your code goes here...
}
这避免你的代码的执行每次加载甚至投递的页面,这将导致你每次将新节点添加到您的树中。