Skip to main content

"cannot update library or list" while publishing InfoPath form

This error comes when the column limit is exceeded in InfoPath form library because of the setting change happens when we take template from QA to PROD environments. Anyone should never use "Quick Publish" button on the ribbon of InfoPath in high risk environments and check every column mapped in Property Promotion window of publish wizard.

The following CSOM code can be used to delete the duplicate columns(which are read-only) created because of the above error,

ClientContext context = new ClientContext(sharePointSiteURL);
Site oSite = context.Site;
context.Load(oSite);
Web web = context.Web;
List doclist = web.Lists.GetByTitle("LibraryName");
context.Load(doclist);
context.ExecuteQuery();
FieldCollection fieldCollection = web.Lists.GetByTitle("LibraryName").Fields;
foreach (Field column in fieldCollection)
{
    if (column.InternalName.Equals("ColumnName"))
    {
        column.ReadOnlyField = false;       
        column.Update();       
        column.DeleteObject();       
        column.Update();       
        context.ExecuteQuery();
    }
}

The following links have more related information,

Hope this helps someone!

Comments

Popular posts from this blog

Permission audit report for site and all sub sites using PowerShell

Use below script to get Permission audit report for site and all sub sites using PowerShell, Add-PSSnapin "Microsoft.SharePoint.PowerShell" $URL="https://intranet.contoso.com/sales/mysite/"      $site = Get-SPSite $URL      #Write the Header to "Tab Separated Text File"         "Site Name`t  URL `t Group Name `t User Account `t User Name `t E-Mail" | out-file "E:\Ulhas\UsersandGroupsRpt.txt"          #Iterate through all Webs       foreach ($web in $site.AllWebs)       {         #Write the Header to "Tab Separated Text File"         "$($web.title) `t $($web.URL) `t  `t  `t `t " | out-file "E:\Ulhas\UsersandGroupsRpt.txt" -append          #Get all Groups and Iterate through            foreach ($group in $Web.groups)          {                 "`t  `t $($Group.Name) `t   `t `t " | out-file "E:\Ulhas\UsersandGroupsRpt.txt" -append                 #Iterate throu

GetListItem and UpdateListItem using SPServices in MOSS 2007

GetListItem and UpdateListItem using SPServices in MOSS 2007 $(document).ready(function() { var itemToUpdate = GetListItem(); UpdateListItem(itemToUpdate); }); function GetListItem(){ var today = new Date(); var dayOfWeek = today.getDay(); var itemID = 0; var out = ""; var titleField = "<FieldRef Name='Title' />"; var descriptionField = "<FieldRef Name='Description' />"; var viewFields = "<ViewFields>" + titleField + descriptionField + "</ViewFields>"; var myQuery = "<Query>" + "<OrderBy>" + "<FieldRef Name='ItemOrder' Ascending='True'/>" + "</OrderBy>" + "</Query>"; $().SPServices({ operation: "GetListItems", async: false, listName: "MyList", CAMLQuery: myQuery,   CAMLViewFields: viewFields, completefunc: fun

Bind a html string with Enhanced rich text box which has heavy formatting in O365 using Angular JS

Bind a html string with Enhanced rich text box which has heavy formatting in O365 using Angular JS , below solution did the trick. You have to use  $sce.trustAsHtml() , to use it directly into the DOM, you could do it like this, JS/controller part: Ref:  http://stackoverflow.com/questions/21503588/angularjs-bind-html-string-with-custom-style $scope . trustAsHtml = function ( string ) { return $sce . trustAsHtml ( string ); }; And in DOM/HTML part <div data-ng-bind-html = "trustAsHtml(htmlString)" ></div>