首先让我们看看MOSS2007整个对象模型架构
从最内层开始出发
SPListItem 创建Item,这里需要注意的一点是这里的name参数需要用internal names
Code 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"] ="annsimms@adventureworks.com"; 6 item.Update();
SPListItemCollection 获取List的列表项的集合,具体方法为
Code list.Items.GetDataTalbe();
SpQuery 结合CAML 查询制定列表或者站点下某一类列表项
1.制定列表下
Code 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.站点下某一类列表
Code 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
Code 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 }
文档库新增文件以及文档库文件的转移
Code 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 }
在网上看到个遍历文档库下所有文件的方法,感觉比较不错,这里收下共享出来
Code 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 }
关于获取文档库信息的一些对象,这个帖子感觉比较全面Item