Sharepoint中用treeview来显示组织机构的人员状态的webpart

2009-04-28 16:23 by Virus-BeautyCode, 编辑

     

                {
                    targetItem[f.InternalName] = sourceItem[f.InternalName];
                }
            }
            //copy attachments
            foreach (string fileName in sourceItem.Attachments)
            {
                SPFile file = sourceItem.ParentList.ParentWeb.GetFile(sourceItem.Attachments.UrlPrefix + fileName);
                byte[] imageData = file.OpenBinary();
                targetItem.Attachments.Add(fileName, imageData);
            }
            targetItem.Update();
            return targetItem;
        }

 

            }
        }

 

      使用.net操作AD域的一些代码共享

      http://blog.lickies.cn/Lists/Posts/Post.aspx?List=34201ce7%2Dcc0e%2D452a%2D949a%2Dffcf74a1780a&ID=6

      AD认证模式下如何通过表单登录来代替WINDOWS弹出窗口的方法

      http://blog.lickies.cn/Lists/Posts/Post.aspx?List=34201ce7%2Dcc0e%2D452a%2D949a%2Dffcf74a1780a&ID=4&Source=http%3A%2F%2Fblog%2Elickies%2Ecn%2FLists%2FPosts%2FAllPosts%2Easpx

      目前做的一个项目有一个需求,就是客户要求一级子部门有自己的网站,网站要求显示成员和子部门的成员,用树结构来显示。

      同时客户还有一些横向的组织,就是例如卫生工作小组、防火工作小组之类的,抽取组织结构中的人员来组成,要求这些小组也有自己的网站,网站同样显示人员状态,这里就不用树形了,因为只有一级的关系。

      定义两个内容类型:一个用来放组织结构或者工作组,继承文件夹SPFolder;一个代表人员,有一个栏目的类型为SPUser,代表这个人在网站中的信息

 

      还发现了一个细节的地方,SP的细节地方真是多啊,一不小心就掉进陷阱了。

      今天发现的就是SPFolder,SPWeb.GetFolder()和list.RootFolder.SubFolders[]取出来的SPFolder不是一样的,前者的SPFolder是孤立的,没有ParentFolder和SubFolders,这两个值都是"",后者获取的SPFolder是可以获取前后关系的。

      效果如下图

 

Sharepoint中用treeview来显示组织机构的人员状态的webpart
    

Sharepoint中用treeview来显示组织机构的人员状态的webpart

图1  组织结构用户图

Sharepoint中用treeview来显示组织机构的人员状态的webpart
    

Sharepoint中用treeview来显示组织机构的人员状态的webpart

图2  工作小组用户图

 

 

      代码如下

      

      

            }
        }
    }
}

 

 

       顺便在给大家贴上一段TreeViewDocLib,树形文档库的WebPart,网上找到的,也很好用。

 

Sharepoint中用treeview来显示组织机构的人员状态的webpart
    

Sharepoint中用treeview来显示组织机构的人员状态的webpart 

 

                    node.ChildNodes.Add(trnChild);
                }

                // To Verify the Count of Sub Folders in Current Folder
                bool bRecurseFolders = fldr.SubFolders.Count > 0 ? true : false;

                // If It has SubFolders Then it will call the Function Recursively
                if (bRecurseFolders)
                {
                    for (int i = 0; i < fldr.SubFolders.Count; i++)
                    {
                        TreeNode trnChild = new System.Web.UI.WebControls.TreeNode(fldr.SubFolders[i].Name);
                        node.ChildNodes.Add(TraverseFiles(fldr.SubFolders[i], trnChild));
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return node;
        }

        // Creating the ToolPart with the WebPart
        #region IWebEditable Members
        EditorPartCollection IWebEditable.CreateEditorParts ()
        {
            List<EditorPart> editors = new List<EditorPart>();
            editors.Add(new TreeViewEditorPart());
            return new EditorPartCollection(editors);
        }

        object IWebEditable.WebBrowsableObject 
        {
            get { return this; }
        }
        #endregion
    }
}

 

 

 

            base.RenderContents(writer);
        }
    }
}

     

                {
                    targetItem[f.InternalName] = sourceItem[f.InternalName];
                }
            }
            //copy attachments
            foreach (string fileName in sourceItem.Attachments)
            {
                SPFile file = sourceItem.ParentList.ParentWeb.GetFile(sourceItem.Attachments.UrlPrefix + fileName);
                byte[] imageData = file.OpenBinary();
                targetItem.Attachments.Add(fileName, imageData);
            }
            targetItem.Update();
            return targetItem;
        }

 

            }
        }

 

      使用.net操作AD域的一些代码共享

      http://blog.lickies.cn/Lists/Posts/Post.aspx?List=34201ce7%2Dcc0e%2D452a%2D949a%2Dffcf74a1780a&ID=6

      AD认证模式下如何通过表单登录来代替WINDOWS弹出窗口的方法

      http://blog.lickies.cn/Lists/Posts/Post.aspx?List=34201ce7%2Dcc0e%2D452a%2D949a%2Dffcf74a1780a&ID=4&Source=http%3A%2F%2Fblog%2Elickies%2Ecn%2FLists%2FPosts%2FAllPosts%2Easpx

      目前做的一个项目有一个需求,就是客户要求一级子部门有自己的网站,网站要求显示成员和子部门的成员,用树结构来显示。

      同时客户还有一些横向的组织,就是例如卫生工作小组、防火工作小组之类的,抽取组织结构中的人员来组成,要求这些小组也有自己的网站,网站同样显示人员状态,这里就不用树形了,因为只有一级的关系。

      定义两个内容类型:一个用来放组织结构或者工作组,继承文件夹SPFolder;一个代表人员,有一个栏目的类型为SPUser,代表这个人在网站中的信息

 

      还发现了一个细节的地方,SP的细节地方真是多啊,一不小心就掉进陷阱了。

      今天发现的就是SPFolder,SPWeb.GetFolder()和list.RootFolder.SubFolders[]取出来的SPFolder不是一样的,前者的SPFolder是孤立的,没有ParentFolder和SubFolders,这两个值都是"",后者获取的SPFolder是可以获取前后关系的。

      效果如下图

 

Sharepoint中用treeview来显示组织机构的人员状态的webpart
    

Sharepoint中用treeview来显示组织机构的人员状态的webpart

图1  组织结构用户图

Sharepoint中用treeview来显示组织机构的人员状态的webpart
    

Sharepoint中用treeview来显示组织机构的人员状态的webpart

图2  工作小组用户图

 

 

      代码如下

      

      

            }
        }
    }
}

 

 

       顺便在给大家贴上一段TreeViewDocLib,树形文档库的WebPart,网上找到的,也很好用。

 

Sharepoint中用treeview来显示组织机构的人员状态的webpart
    

Sharepoint中用treeview来显示组织机构的人员状态的webpart 

 

                    node.ChildNodes.Add(trnChild);
                }

                // To Verify the Count of Sub Folders in Current Folder
                bool bRecurseFolders = fldr.SubFolders.Count > 0 ? true : false;

                // If It has SubFolders Then it will call the Function Recursively
                if (bRecurseFolders)
                {
                    for (int i = 0; i < fldr.SubFolders.Count; i++)
                    {
                        TreeNode trnChild = new System.Web.UI.WebControls.TreeNode(fldr.SubFolders[i].Name);
                        node.ChildNodes.Add(TraverseFiles(fldr.SubFolders[i], trnChild));
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return node;
        }

        // Creating the ToolPart with the WebPart
        #region IWebEditable Members
        EditorPartCollection IWebEditable.CreateEditorParts ()
        {
            List<EditorPart> editors = new List<EditorPart>();
            editors.Add(new TreeViewEditorPart());
            return new EditorPartCollection(editors);
        }

        object IWebEditable.WebBrowsableObject 
        {
            get { return this; }
        }
        #endregion
    }
}

 

 

 

            base.RenderContents(writer);
        }
    }
}

相关文章: