⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itemaudit.aspx

📁 这是一个在SHAREPOINT上开发的一个审核日记的源代码
💻 ASPX
字号:
<%@ Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Assembly Name="ItemAuditing, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7fd3ed697555604d" %>

<%@ Page Language="C#" MasterPageFile="~/_layouts/application.master" Inherits="Microsoft.SharePoint.WebControls.LayoutsPageBase" %>

<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Security" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="ItemAuditing" %>
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
  Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<script runat="server">

  protected void Page_Load(object sender, EventArgs e) {

    SPSite siteColl = SPContext.Current.Site;
    SPWeb site = SPContext.Current.Web;

    string ListId = Request.QueryString["ListId"];
    string ItemId = Request.QueryString["ItemId"];
    txtListId.Text = ListId;
    txtItemId.Text = ItemId;

    cmdGenerateWorkbook.Attributes["onclick"] = "location.replace('" + site.Url + "/_layouts/AuditLogWorkbook.ashx?" + this.Request.QueryString.ToString() + "');";

    SPList list1 = site.Lists[new Guid(ListId)];
    SPListItem item1 = list1.Items.GetItemById(Convert.ToInt32(ItemId));
    item1.Audit.WriteAuditEvent(SPAuditEventType.Custom, "CustomViewAuditEvent", "");

    SPSecurity.RunWithElevatedPrivileges(delegate() {
      using (SPSite ElevatedSiteCollection = new SPSite(siteColl.ID)) {
        using (SPWeb ElevatedSite = ElevatedSiteCollection.OpenWeb(site.ID)) {
          SPList list = ElevatedSite.Lists[new Guid(ListId)];

          txtListTitle.Text = list.Title;
          SPListItem item = list.Items.GetItemById(Convert.ToInt32(ItemId));
          txtItemTitle.Text = item.Name;

          SPAuditQuery wssQuery;
          SPAuditEntryCollection auditCol;

          wssQuery = new SPAuditQuery(ElevatedSiteCollection);
          wssQuery.RestrictToListItem(item);
          auditCol = ElevatedSite.Audit.GetEntries(wssQuery);

          DataTable table = new DataTable();
          table.Columns.Add("User", typeof(string));
          table.Columns.Add("Event", typeof(string));
          table.Columns.Add("Occurred", typeof(DateTime));
          table.Columns.Add("Version", typeof(string));

          DataRow newRow;

          foreach (SPAuditEntry entry in auditCol) {
            newRow = table.Rows.Add();
            newRow["User"] = GetUserNameById(entry.UserId, site);
            if (entry.SourceName == "CustomViewAuditEvent") {
                newRow["Event"] = "查看审核日志";
            }
            else {
                newRow["Event"] = ConvertEventToLocal(entry.Event);
            }
            newRow["Occurred"] = entry.Occurred.ToLocalTime();
            newRow["Version"] = ParseVersionNumber(entry.EventData);
          }

          SPBoundField boundField = new SPBoundField();
          boundField.HeaderText = "用户";
          boundField.DataField = "User";
          SPGridView1.Columns.Add(boundField);

          boundField = new SPBoundField();
          boundField.HeaderText = "发生时间";
          boundField.DataField = "Occurred";
          boundField.ControlStyle.Width = new Unit(140);
          SPGridView1.Columns.Add(boundField);

          boundField = new SPBoundField();
          boundField.HeaderText = "事件";
          boundField.DataField = "Event";
          SPGridView1.Columns.Add(boundField);

          boundField = new SPBoundField();
          boundField.HeaderText = "版本";
          boundField.DataField = "Version";
          SPGridView1.Columns.Add(boundField);

          SPGridView1.AutoGenerateColumns = false;
          SPGridView1.DataSource = table.DefaultView;
          SPGridView1.DataBind();

          SPGridView1.AllowSorting = true;
          SPGridView1.HeaderStyle.Font.Bold = true;
        }
      }
    });
  }

  string GetUserNameById(int UserId, SPWeb site) {
    try {
      return site.SiteUsers.GetByID(UserId).Name;
    }
    catch {
      return UserId.ToString();
    }
  }

  protected string ParseVersionNumber(string versionString) {
    try {
      int startMajor = versionString.IndexOf("<Major>") + 7;
      int endMajor = versionString.IndexOf("</Major>");
      int lengthMajor = endMajor - startMajor;
      int startMinor = versionString.IndexOf("<Minor>") + 7;
      int endMinor = versionString.IndexOf("</Minor>");
      int lengthMinor = endMinor - startMinor;

      string majorNumber = versionString.Substring(startMajor, lengthMajor);
      string minorNumber = versionString.Substring(startMinor, lengthMinor);

      if (majorNumber == "0" && minorNumber == "-1")
        return "N/A";

      return majorNumber + "." + minorNumber;
    }
    catch {
      return "N/A";
    }
  }

  protected void cmdViewWithExcelServices_Click(object sender, EventArgs e) {
    SPSite siteColl = SPContext.Current.Site;
    SPWeb site = SPContext.Current.Web;
    string ListId = Request.QueryString["ListId"];
    string ItemId = Request.QueryString["ItemId"];

    SPSecurity.RunWithElevatedPrivileges(delegate() {
      using (SPSite ElevatedSiteCollection = new SPSite(siteColl.ID)) {
        using (SPWeb ElevatedSite = ElevatedSiteCollection.OpenWeb(site.ID)) {
          SPList list = ElevatedSite.Lists[new Guid(ListId)];
          SPListItem item = list.Items.GetItemById(Convert.ToInt32(ItemId));

          AuditLogWorkbook log = new AuditLogWorkbook();
          log.WriteHeaderInfo(list.Title, item.Name, DateTime.Now);
          SPAuditQuery wssQuery;
          SPAuditEntryCollection auditCol;

          wssQuery = new SPAuditQuery(ElevatedSiteCollection);
          wssQuery.RestrictToListItem(item);
          auditCol = ElevatedSite.Audit.GetEntries(wssQuery);

          string eventType;
          foreach (SPAuditEntry entry in auditCol) {
            if (entry.SourceName == "CustomViewAuditEvent") {
                eventType = "查看审核日志";
            }
            else {
                eventType = ConvertEventToLocal(entry.Event);
            }

            log.WriteEntry(GetUserNameById(entry.UserId, site),
                             entry.Occurred.ToLocalTime().ToString(),
                             eventType,
                             ParseVersionNumber(entry.EventData));
          }

          Stream strDocument = log.GetDocument();

          SPDocumentLibrary library = (SPDocumentLibrary)siteColl.RootWeb.Lists["审核日志库"];
          string documentName = string.Format("{0} 审核 在 {1:MM-dd-yyyy}.xlsx", item.Name, DateTime.Now);

          string libraryPath = library.ParentWeb.Site.MakeFullUrl(library.RootFolder.ServerRelativeUrl);
          string documentPath = libraryPath + "/" + documentName;
          library.ParentWeb.Files.Add(documentPath, strDocument, true);
          strDocument.Close();

          string XlViewerPath = siteColl.ServerRelativeUrl;
          if (XlViewerPath[XlViewerPath.Length - 1] != '/')
            XlViewerPath += "/";
          XlViewerPath += @"_layouts/xlviewer.aspx?listguid={" + library.ID.ToString().ToUpper() + "}";
          XlViewerPath += @"&itemid=" + item.ID.ToString() + @"&DefaultItemOpen=1";

          Response.Redirect(XlViewerPath);

        }
      }
    });
  }

    protected String ConvertEventToLocal(SPAuditEventType Event)
    {
        string operate = String.Empty;
        switch (Event)
        {
            case SPAuditEventType.AuditMaskChange:	//A change in the types of events that are audited for the object. 
                operate = "更改事件类型[审核]";
                break;
            case SPAuditEventType.CheckIn:	//Check-in of the object.
                operate = "签入";
                break;
            case SPAuditEventType.CheckOut:	//Check-out of the object. 
                operate = "签出";
                break;
            case SPAuditEventType.ChildDelete:	//Deletion of one of the child objects of the object. 
                operate = "子项目删除";
                break;
            case SPAuditEventType.ChildMove:	//Move of one of the child objects of the object. 
                operate = "子项目移动";
                break;
            case SPAuditEventType.Copy:	//Copying of the object. 
                operate = "复制";
                break;
            case SPAuditEventType.Custom:	//Custom action or event. 
                operate = "自定义";
                break;
            case SPAuditEventType.Delete:	//Deletion of the object. 
                operate = "删除";
                break;
            case SPAuditEventType.EventsDeleted:	//Deletion of audited events that are connected with the object from the SharePoint database. 
                operate = "删除事件[审核]";
                break;
            case SPAuditEventType.Move:	//Move of the object. 
                operate = "移动";
                break;
            case SPAuditEventType.ProfileChange:	//Change in a profile that is associated with the object. 
                operate = "个性化更改";
                break;
            case SPAuditEventType.SchemaChange:	//Change in the schema of the object. 
                operate = "架构更改";
                break;
            case SPAuditEventType.Search:	//Search on the object. 
                operate = "搜索";
                break;
            case SPAuditEventType.SecGroupCreate:	//Creation of a user group for a SharePoint site collection.  
                operate = "用户组创建[网站集]";
                break;
            case SPAuditEventType.SecGroupDelete:	//Deletion of a group that is associated with a SharePoint site collection.
                operate = "用户组删除[网站集]";
                break;
            case SPAuditEventType.SecGroupMemberAdd:	//Addition of a new member to a group that is associated with a SharePoint site collection. 
                operate = "添加用户[网站集]";
                break;
            case SPAuditEventType.SecGroupMemberDel:	//Deletion of a member from a group that is associated with a SharePoint site collection.
                operate = "删除用户[网站集]";
                break;
            case SPAuditEventType.SecRoleBindBreakInherit:	//Turning off inheritance of security settings from the parent of the object. 
                operate = "不从父级继承权限";
                break;
            case SPAuditEventType.SecRoleBindInherit:	//Turning on inheritance of security settings from the parent of the object. 
                operate = "从父级继承权限";
                break;
            case SPAuditEventType.SecRoleBindUpdate:	//Changing the permissions of a user or group for the object. 
                operate = "更改用户(组)权限";
                break;
            case SPAuditEventType.SecRoleDefBreakInherit:	//Turning off inheritance of role (that is, permission level) definitions from the parent of the object. 
                operate = "停止从父级继承权限级别";
                break;
            case SPAuditEventType.SecRoleDefCreate://Creation of a new role (that is, permission level) definition associated with the object. 
                operate = "添加权限级别";
                break;
            case SPAuditEventType.SecRoleDefDelete:	//Removal of a role (that is, permission level) definition associated with the object. 
                operate = "移除权限级别";
                break;
            case SPAuditEventType.SecRoleDefModify:	//Changing a role (that is, permission level) definition associated with an object. 
                operate = "更改权限级别";
                break;
            case SPAuditEventType.Undelete:	//Restoration of an object from the Recycle Bin. 
                operate = "从回收站还原";
                break;
            case SPAuditEventType.Update:	//Changing the properties of an object or creating an object. 
                operate = "更改";
                break;
            case SPAuditEventType.View:	//Viewing of the object by a user. 
                operate = "查看";
                break;
            case SPAuditEventType.Workflow:
                operate = "工作流";
                break;
            default:
                operate = "未知操作";
                break;
        }
        return operate;
    }
</script>

<asp:Content ID="Content6" ContentPlaceHolderID="PlaceHolderMain" runat="server">
  <table width="100%" border="1" cellspacing="0" cellpadding="2">
    <tr>
      <td style="width: 171px">
          列表 编号[GUID]</td>
      <td>
        <asp:TextBox ID="txtListId" runat="server" Width="100%" ReadOnly="True"></asp:TextBox></td>
    </tr>
    <tr>
      <td style="width: 171px">
          列表 标题</td>
      <td>
        <asp:TextBox ID="txtListTitle" runat="server" Width="100%" ReadOnly="True"></asp:TextBox></td>
    </tr>
    <tr>
      <td style="width: 171px">
          项目 编号</td>
      <td>
        <asp:TextBox ID="txtItemId" runat="server" Width="100%" ReadOnly="True"></asp:TextBox></td>
    </tr>
    <tr>
      <td style="width: 171px">
          文档 名称</td>
      <td>
        <asp:TextBox ID="txtItemTitle" runat="server" Width="100%" ReadOnly="True"></asp:TextBox></td>
    </tr>
  </table>
  <hr />
  <input type="button" runat="server" id="cmdGenerateWorkbook" value="生成 Excel 工作簿" />
  <asp:Button ID="cmdViewWithExcelServices" runat="server" Text="使用 Excel Services 查看工作簿"
    Width="250" OnClick="cmdViewWithExcelServices_Click" />
  <hr />
  <SharePoint:SPGridView ID="SPGridView1" runat="server" AutoGenerateColumns="False"
    Width="100%">
    <AlternatingRowStyle CssClass="ms-alternating" />
  </SharePoint:SPGridView>
</asp:Content>
<asp:Content ID="Content1" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
  项目审核
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea"
  runat="server">
  项目审核
</asp:Content>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -