目录
article
VisualStudio 开发 WebPart 之操作列表项和文件
VisualStudio 开发 WebPart 之操作列表项和文件
列表中包含 N 条列表项,文档库中包含 N 个文件。如何操作这些列表或者文档库中的内容呢?
下面是针对列表项的操作代码:
SPSite site = new SPSite("http://spserver");
SPWeb web = site.RootWeb;
SPList list = web.Lists["公告"];
//允许站点在 GET 请求上进行更新
web.AllowUnsafeUpdates = true;
//输出所有列表项
SPListItemCollection allItems = list.Items;
foreach(SPListItem item in allItems)
{
Response.Write(item.Title);
Response.Write(item["正文"]);
}
//删除列表项
SPListItem item1 = list.Items[0];
item1.Delete();
//添加列表项
SPListItem newItem = list.Items.Add();
newItem["标题"] = "标题 1";
newItem["正文"] = "征文 1";
newItem.Update();
web.Dispose();
site.Dispose();
由列表项 ID 获取一个列表项有两种方式:
SPListItem item1 = list.Items.GetItemById(1);
SPListItem item2 = list.GetItemById(1);
上面第一种写法需要将列表的所有数据加载到内存中,然后再按照 ID 获取,当列表数据量较大时,会造成性能问题,所以一般采用第 2 种方式。
获取到列表项之后,可以通过 File 属性获取到文件对象,或者如果知道文件的路径,通过 SPWeb 对象可以获取文件对象,对文档库来说,列表项和文件对象可以相互转换:
SPSite site = new SPSite("http://spserver");
SPWeb web =site.RootWeb;
SPList list = web.Lists["我的文档"];
SPDocumentLibrary docLib = (SPDocumentLibrary) list;
web.AllowUnsafeUpdates = true;
//删除
SPListItem item1 = list.Items[0];
item1.Delete();
SPListItem item2 = list.Items.GetItemById(1);
//获取文件对象
SPFile file2 = item2.File;
//打开文件数据
byte[] fileData = file2.OpenBinary();
//通过文件 URL 来获取文件对象
SPFile file3 = web.GetFile("http://spserver/Shared%20Document/myfile.doc");
//通过文件对象获取到列表项对象,通过列表项对象可以修改文件的扩展属性
SPListItem item3 = file3.Item;
//添加文件,首先将文件加载到 byte 数祖
byte[] newFileData = System.IO.File.ReadAllBytes(@"C:test.doc");
//然后添加到文件夹的文件集合中
SPFile newFIle = docLib.RootFolder.Files.Add("test.doc",fileData);
web.Dispose();
site.Dispose();
关于列表操作和文件操作的相同和不同:
相同:删除数据,获取数据。
不同:添加数据
列表项通过 Items.Add 来添加;文件通过文档库对象的 Files.Add 来添加。