Friday, July 20, 2012

Set the fields in Document Library on Page Load

Here is the screenshot that sets the following columns in Document Library:
  • Type
  • Name
  • Author
  • Modified By


Here is the code:

private void SetDocumentLibraryWithAuthorSiteColumn()
{
    SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite elevatedSite = new SPSite(SPContext.Current.Site.ID))
            {
                using (SPWeb elevatedWeb = elevatedSite.OpenWeb(SPContext.Current.Web.ID))
                {
                    if (elevatedWeb.Name != "Library")
                    {
                        elevatedWeb.AllowUnsafeUpdates = true;
                        SPList list = elevatedWeb.GetList(SPContext.Current.RootFolderUrl);
                        SPView view = list.Views["All Documents"];
                        if (!list.Fields.ContainsField("_Author"))
                        {
                            // Add existing site cloumn (Author)
                            list.Fields.Add(elevatedWeb.AvailableFields["Author"]);
                            // Delete the following columns from Default View                       
                            if (view.ViewFields.Exists("Modified"))
                                view.ViewFields.Delete("Modified");
                            if (view.ViewFields.Exists("Editor"))
                                view.ViewFields.Delete("Editor");
                            if (view.ViewFields.Exists("CheckoutUser"))
                                view.ViewFields.Delete("CheckoutUser");
                            if (list.Fields.ContainsField("DocmentDescriptionMP"))
                            {
                                if (view.ViewFields.Exists("DocmentDescriptionMP"))
                                    view.ViewFields.Delete("DocmentDescriptionMP");
                            }
                            if (list.Fields.ContainsField("DocmentDescriptionMP"))
                            {
                                if (view.ViewFields.Exists("GLDepartmentMP"))
                                    view.ViewFields.Delete("GLDepartmentMP");
                            }
                            // Add the following columns to Default View                                                
                            view.ViewFields.Add("_Author");
                            view.ViewFields.Add("Editor");
                            view.Update();
                        }
                        list.Update();
                    }
                }
            }
        });
}

No comments:

Post a Comment