Outlook Addin的SharePoint库树视图

时间:2013-05-11 10:58:05

标签: c# sharepoint tree treeview save

我目前正在开发一个Outlook Addin,这是我第一次做面向对象的事情, 我是一个初学者,但是因为你们所有人都必须在某个地方,我认为你们都可以富有同情心和我一起:)并且如果我问的方式可能会被认为是愚蠢的,那就不要判断我。 / p>

我有一个Outlook Addin,可以将电子邮件从Outlook保存到SharePoint,我需要的是 SharePoint库树视图,它会在保存到SharePoint 后显示按下按钮(应该看起来像这样TreeView

我的问题这里的任何人都有这方面的经验,任何人都做过类似的事情,有人可以帮助我通过任何tipps开始吗? 我提前感谢大家,我期待着你的伟大的答案。

到目前为止我所拥有的是这个,但我需要一些关于如何使用它的知识:

public class WebPart1 : System.Web.UI.WebControls.WebParts.WebPart
{

TreeView treeView;
TreeNode rootNode;

public WebPart1()
{
}

protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)
{
    // render the control
    base.RenderContents(writer);
}

protected override void CreateChildControls()
{
    base.CreateChildControls();

    // get the current site
    SPSite currentSite = SPContext.Current.Site;
    using (SPWeb currentWeb = currentSite.OpenWeb())
    {
        // set the tree view properties
        treeView = new System.Web.UI.WebControls.TreeView();
        treeView.ShowLines = true; // show lines
        treeView.ExpandDepth = 0; // expand non

        SPList list = currentWeb.Lists["All Programs"];

        // build the tree
        rootNode = new System.Web.UI.WebControls.TreeNode(list.Title, "", 
                   "", list.RootFolder.ServerRelativeUrl.ToString(), "");

        // loop down the tree
        GetFolder(list.RootFolder, rootNode, list);

        // add the root node to tree view
        treeView.Nodes.Add(rootNode);
    }
    this.Controls.Add(treeView);
    base.CreateChildControls();
}

public void GetFolder(SPFolder folder, TreeNode rootNode, SPList list)
{
    // create a new node
    TreeNode newNode = new System.Web.UI.WebControls.TreeNode(folder.Name, "", 
                       "~/_layouts/images/itdl.gif", 
                       folder.ServerRelativeUrl.ToString(), "");
    try
    {
        // don't add the forms folder
        if (folder.Name != "Link")
        {
            // loop through all child folders
            foreach (SPFolder childFolder in folder.SubFolders)
            {
                // don't add the forms folder
                if (childFolder.Name != "Link")
                {
                    TreeNode trn = 
                      new System.Web.UI.WebControls.TreeNode(childFolder.Name, "", 
                      "", childFolder.ServerRelativeUrl.ToString(), "");
                    newNode = GetItems(childFolder, trn);

                    // add the new node to the tree
                    rootNode.ChildNodes.Add(newNode);
                }
            }
        }
    }
    catch { }
}

public TreeNode GetItems(SPFolder folder, TreeNode node)
{
    //Get Items from childFolder
    SPQuery qry = new SPQuery();
    qry.Folder = folder;
    SPWeb web = null;

    web = folder.ParentWeb;
    SPListItemCollection ic = web.Lists[folder.ParentListId].GetItems(qry);

    foreach (SPListItem subitem in ic)
    {
        if (subitem.Folder != null) //Is Subfolder
        {
            // create a new node for a subfolder and add items to it
            TreeNode childNode = 
              new System.Web.UI.WebControls.TreeNode(subitem.Folder.Name);
            node.ChildNodes.Add(GetItems(subitem.Folder, childNode));
        }  

        if (subitem.Folder == null)
        {
            TreeNode trn1 = new System.Web.UI.WebControls.TreeNode(
                                  subitem["Title0"].ToString());
            node.ChildNodes.Add(trn1);
        }
    }
    return node;
}
}

2 个答案:

答案 0 :(得分:0)

就面向对象而言,您需要了解有类和对象是类的实例。

一个类只是一个通用的蓝图。 对象是该蓝图的实例化。

使用点运算符,对象可以访问您为类设置的参数。

例如,如果您有一个名为Person的类,并带有age参数。如果你实例化了创建一个名为Tim的对象的类,你可以说。 Tim.age指的是年龄属性。

答案 1 :(得分:0)

我开发了一个完全符合您描述的应用程序: https://out2share.codeplex.com/ 你可以查看代码。