承接MOSS各种工作流开发 联系人:王先生.电话:18618405729QQ:252385878 QQ群:41696750 MSN:wanghao-3@hotmail.com

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

代码遍历列表的方法(支持文件夹的列表的项目遍历)




笔记备注:
 
在WSS V3中列表(List)中是支持文件夹的,可以用文件夹来组织一个列表的项目。
WSS V3中列表的结构如下:

代码遍历列表的方法(支持文件夹的列表的项目遍历)

在WSS V3的对象模型中SPList下的所有列表项目和子文件夹都是SPListItem,只是SPListItem的ContentType不一样
    项目的ContentType.Name = Item
    文件夹的ContentType.Name = Folder

用SPQuery.Folder可以设置Query的文件夹,利用SPList.GetItems(SPQuery)可以得到相应文件夹下的项目(包括了文件夹)

遍历列表项目的时候需要做到:
1)遍历出文件夹的层级结构
2)得到每个文件夹下的ListItem并区分是Item还是Folder,如果是Folder则还需要继续向下遍历

根据以上的分析,利用递归来完成列表的遍历:

        public static void getlistitems(SPList templist,SPFolder tempfolder,string levelstring)
        
{
            
if (templist.RootFolder != tempfolder)
            
{
                Console.WriteLine(
" " + levelstring + "." + tempfolder.Name);
            }

            
else
            
{
                Console.WriteLine(levelstring 
+ "." + tempfolder.Name);
            }

            SPQuery myquery 
=new SPQuery();
            
if (tempfolder.SubFolders.Count != 0)
            
{
                myquery.Folder 
= tempfolder;
                
foreach (SPListItem tempitem in templist.GetItems(myquery))
                
{
                    
if (tempitem.ContentType.Name == "Item") Console.WriteLine(" " + levelstring + "." + tempfolder.Name + "." + tempitem.Title + "(Item)");
                    
if (tempitem.ContentType.Name == "Folder") getlistitems(templist, tempitem.Folder, " " + levelstring + "." + tempfolder.Name);
                }

            }

            
else
            
{
                myquery.Folder 
= tempfolder;
                
foreach (SPListItem tempitem in templist.GetItems(myquery))
                
{
                   Console.WriteLine(
"  " + levelstring + "." + tempfolder.Name + "." + tempitem.Title+"(Item)");
                }

            }

        }

blogs主人link : http://www.cnblogs.com/FreePark/archive/2006/07/18/453974.html

posted on   A A  阅读(1109)  评论(1编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示