MOSS对象模型之:SPList

首先让我们看看MOSS2007整个对象模型架构

 MOSS对象模型之:SPList_第1张图片

从最内层开始出发

   SPListItem 创建Item,这里需要注意的一点是这里的name参数需要用internal names

   


1 SPListItem item = list.Items.Add();
2 item["Title"= "Ann Simms";
3 item["First_x0020_Name"= "Ann";
4 item["Last_x0020_Name"= "Simms";
5 item["EmailAddress"="[email protected]";
6  item.Update();

 

  SPListItemCollection 获取List的列表项的集合,具体方法为

 


list.Items.GetDataTalbe();

 

  SpQuery 结合CAML 查询制定列表或者站点下某一类列表项

  1.制定列表下

  


1 SPWeb web = SPContext.Current.Web;
2 SPList list = web.Lists[“Announcements”];
3 SPQuery query = new SPQuery();
4 string date = SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Today);
5 qry.Query = "<OrderBy><FieldRef Name='Title' /></OrderBy>" +
6       "<Where><Geq><FieldRef Name='Created' />" +
7        "<Value Type='DateTime'>" + date + "</Value></Geq></Where>";        
8  SPListItemCollection results = list.GetItems(query);
9 

 

  2.站点下某一类列表

 

 


 1 SPWeb web = SPContext.Current.Web;
 2 SPSiteDataQuery qry = new SPSiteDataQuery();
 3 string date = SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Today);
 4 qry.Query = "<OrderBy><FieldRef Name='Title' /></OrderBy>" +
 5       "<Where><Geq><FieldRef Name='Created' />" +
 6        "<Value Type='DateTime'>" + date + "</Value></Geq></Where>";        
 7 qry.Lists = "<Lists ServerTemplate='101' />";
 8 qry.ViewFields = "<FieldRef Name='Title' />";
 9 qry.Webs = "<Webs Scope='SiteCollection' />";
10  DataTable tbl = web.GetSiteData(qry);
11 

 

这里的ServerTemplate="101" 101表示查找的为普通list列表

 

 

对文档库的部分操作

文档库之间文件的拷贝,做了个简单的Demo

 


 1 using (SPSite site = new SPSite("http://cpu/"))
 2             {
 3                 try
 4                 {
 5 
 6                     //拷贝
 7                        SPWeb web = site.RootWeb;
 8                     //SPDocumentLibrary doclib = (SPDocumentLibrary)web.Lists["共享文档"];
 9                
10                     SPFile document = web.GetFile("DOC1/role.txt");
11                     document.CopyTo("http://cpu/Execel/role.txt"true);
12 
13                     Console.WriteLine("It's OK");
14                 }
15 
16                 catch (Exception ex)
17                 {
18                     Console.WriteLine(ex.Message);
19                 }
20 
21                 finally
22                 {
23                     Console.ReadLine();
24                 }
25             }

 

文档库新增文件以及文档库文件的转移

 

 


 1    using (SPSite site = new SPSite("http://cpu/"))
 2                 {
 3                     try
 4                     {
 5                         //新增
 6                         SPWeb web = site.RootWeb;
 7                         SPList list = web.Lists["共享文档"];
 8 
 9                         SPFile document = web.GetFile("Execel/5.gif");
10                         SPFile newdoc = list.RootFolder.Files.Add
11                            (list.RootFolder.Url + "/" + document.Name,
12                             document.OpenBinary(), document.Author,
13                             document.ModifiedBy, document.TimeCreated,
14                             document.TimeLastModified);
15                         list.Update();
16 
17                         //移动到
18                         document.MoveTo("http://cpu/DOC1/5.gif"true);
19 
20 
21                     }
22 
23                     catch (Exception ex)
24                     {
25                         Console.WriteLine(ex.Message);
26                     }
27                     finally
28                     {
29                         Console.ReadLine();
30                     }
31                  }

 

在网上看到个遍历文档库下所有文件的方法,感觉比较不错,这里收下共享出来

 


 1 //调用
 2           SPWeb web = site.RootWeb;
 3           SPDocumentLibrary doclib = (SPDocumentLibrary)web.Lists["共享文档"];
 4           doclib.Lists.IncludeRootFolder = true;
 5           GoThroughDocLib(doclib, doclib.RootFolder, 0);
 6 //方法
 7 static void GoThroughDocLib(SPDocumentLibrary doclib, SPFolder folder, int level)
 8         {
 9             SPListItemCollection items = doclib.GetItemsInFolder(doclib.DefaultView, folder);
10             if (items.Count == 0)
11                 return;
12 
13             for (int i = 0; i < level; i++)
14                 Console.Write("  ");
15             foreach (SPListItem item in items)
16             {
17                 if (item.FileSystemObjectType == SPFileSystemObjectType.Folder)
18                 {
19                     Console.WriteLine("[{0}]", item.Name);
20                     GoThroughDocLib(doclib, item.Folder, level + 1);
21                 }
22                 else
23                     Console.WriteLine(item.Name);
24             }
25         }

你可能感兴趣的:(plist)