SPListItem spDoc = oWeb.Lists["共享文档"].GetItemById(DocumentID);
SPFileVersionCollection versionColl = spDoc.File.Versions;
foreach (SPFileVersion version in versionColl)
{
//将UTC时间格式转换为本地时间
DateTime versionTime = Convert.ToDateTime(oWeb.RegionalSettings.TimeZone.UTCToLocalTime(Convert.ToDateTime(version.Properties["vti_timelastmodified"])));
string versionTimeString = versionTime.ToString("yyyy/MM/dd/ HH:mm");
文档版本记录.Add(new ListEntity.文档版本历史记录列表(Convert.ToString(version.VersionLabel),
versionTimeString,
Convert.ToString(version.Properties["vti_modifiedby"]),
Convert.ToString(version.Properties["vti_filesize"]),
Convert.ToString(version.CheckInComment)));
}
//上面只能得到,版本历史记录-1条,最后一天不在SPFileVersion中。最后一天原则上能在SPListItemVersion 中找到,貌似还没有找到更好的方法。
#region 版本信息操作
/// <summary>
/// 获取当前版本信息 参数
/// </summary>
void getTemplateVision()
{
string url = "/Lists/test";
using (SPSite site = new SPSite(this.Web.Url))
{
using (SPWeb spweb = site.OpenWeb())
{
SPList TemplateList = spweb.GetList(url);
SPListItem item = TemplateList.GetItemById(this.JRequest.Id);
List<DocVersion> vs = new List<DocVersion>();
SPFileVersionCollection vsColl = item.File.Versions;
foreach (SPFileVersion version in vsColl)
{
DocVersion v = new DocVersion();
v.Created = version.Created;
v.Author = version.CreatedBy.Name;
v.VersionId = version.ID;
v.URL = version.File.Url;
v.No = version.VersionLabel;
vs.Add(v);
}
this.JResponse.DocVersion = vs;
}
}
}
/// <summary>
/// 覆盖当前版本
/// </summary>
void RestoreTemplateVision()
{
string url = "/Lists/test";
string templatevid = Request["VersionId"];
int vid = 0;
Int32.TryParse(templatevid, out vid);
if (vid > 0)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite spSite = new SPSite(this.Web.Url))
{
using (SPWeb spWeb = spSite.OpenWeb())
{
spWeb.AllowUnsafeUpdates = true;
SPList TemplateList = spWeb.GetList(url);
SPListItem item = TemplateList.GetItemById(this.JRequest.Id);
SPFileVersionCollection vs = item.File.Versions;
vs.RestoreByID(vid);//将当前版本置顶为最新版本,这个动作会新增一个版本号,并将当前版本文档追加到新增的版本
spWeb.AllowUnsafeUpdates = false;
}
}
});
}
}
/// <summary>
/// 删除当前版本
/// </summary>
void delTemplateVision()
{
string url = "/Lists/test";
string templatevid = Request["VersionId"];
int vid = 0;
Int32.TryParse(templatevid, out vid);
if (vid > 0)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(this.Web.Url))
{
using (SPWeb web = site.OpenWeb())
{
web.AllowUnsafeUpdates = true;
SPList TemplateList = web.GetList(url);
SPListItem item = TemplateList.GetItemById(this.JRequest.Id);
SPFileVersionCollection vs = item.File.Versions;
SPFileVersion sv = vs.GetVersionFromID(vid);
if (sv != null)
{
sv.Delete();
}
web.AllowUnsafeUpdates = false;
}
}
});
}
}
#endregion
public class DocVersion
{
public DateTime Created;
public string Author;
public string No;
public int VersionId;
public string URL;
}