41

You would never use RootWeb in the context of a using statement and OpenWeb() isn't useful unless the URL specified in the SPSite constructor was a sub web of the site collection in lieu of just the site collection URL. So, you should never do this: using (SPWeb web = site.RootWeb) { // do something with web } ...and OpenWeb() is useful in a scenario ...


21

The usual recommendations for using RWEP are to Avoid using SPSecurity.RunwithElevatedPrivilege to access the SharePoint object model. Instead, use the SPUserToken to impersonate with SPSite. Only use SPSecurity.RunwithElevatedPrivilege to make network calls under the application pool identity. Don't use it for elevation of privilege of SharePoint objects. ...


20

Try the following code to get the items based on the folder, using(SPSite site = new SPSite("site url")) { using(SPWeb web = site.OpenWeb()) { SPFolder folder = web.GetFolder("/Docs/folder1"); if(folder.ItemCount > 0) { SPList list = web.Lists.TryGetList("ListName"); SPQuery query = new SPQuery(); query.Folder = folder; ...


15

One of the problems with content types (there are quite a few!) is that the design with site and list content types works very poorly with the declarative (XML) approach. If you just update your Content Type manifest and re-install the feature new content types will be affected, but not all the list content types already "instantiated" from the site content ...


15

There are a couple of methods for this available in the object model without the need to handle the slashes etc yourself, one method using MakeFullUrl: var fullUrl = item.ParentList.ParentWeb.Site.MakeFullUrl(item.ParentList.DefaultDisplayFormUrl); Parameters strUrl Type: System.String A string that specifies the server-relative URL. ...


13

Thus far, using the object model has been the only way I have been able to successfully do this. I encountered the same issues as you when using PowerShell. Using Jaspers' post SP2010: Setting BCS column and related fields as my guide, I used the following code to iterate through all the items in my Resumes document library, read the value from the "regular"...


11

Take a look on msdn foreach (SPUser user in group.Users) { group.RemoveUser(user); } But be aware that you change this group for the whole site collection, if you have other site collections those won't be impacted by the modification of this group.


11

From the point of view of an experienced developer there is no major difference but there are points to consider. Code approach: More friendly for new developers, cause VS environment provides good features for investigating new API You can debug it step by step, comment and use Watch tools, in comparison with XML where you just see the result Before XML ...


11

UserProfile.PersonalSite property gets the personal site of the User: var profileManager = new UserProfileManager(ServerContext.GetContext(SPContext.Current.Site)); var profile = profileManager.GetUserProfile("domain\\username"); using (SPSite personalSite = profile.PersonalSite) { var personalSiteUrl = personalSite.PersonalUrl; }


10

This might end up as a 'whatever floats your boat' kinda question. I will add though, that whatever you choose, make sure it's consistent throughout the entire solution. Remember that creating Content Types programmatically is done at Feature Activated level, which is after Feature XML is processed, so if you're provisioning Page Layouts, you'll need to ...


10

Next time you perform the changes to the ContentType make sure to push changes to the lists while updating the ContentType. For now, you might need to perform some clean-up job here, just to make sure the field is deleted from all the lists, with your Custom ContentType. Use the following PowerShell script for clean-up! Vårsegod :) Add-PSSnapin Microsoft....


9

There's probably a bunch of different ways to do this, but here's a snippet from some C# code that I wrote a while back converted to PowerShell. Hope it's along the lines of what you're looking for: Start-SPAssignment -Global $web = Get-SPWeb "http://sharepointdev:90" $list = $web.Lists.TryGetList("Site Pages") foreach ($file in $list.RootFolder.Files) { ...


9

The MSDN documentation for the SPQuery class has a code example of using SPQuery to interrogate a list. Here is the code sample in case it changes over time: using (SPWeb oWebsiteRoot = SPContext.Current.Site.RootWeb) { SPList oList = oWebsiteRoot.Lists["Tasks"]; SPQuery oQuery = new SPQuery(); oQuery.Query = "<Where><Eq><...


9

When running inside RunWithElevatedPrivileges, do not use SPContext.Current. Instead create a new SPSite object, passing in SPContext.Current.Site.Url.


8

You can check SPWeb.UIVersion to see what UI version the site is currently using: switch(web.UIVersion) { case 3: // 2007 break; case 4: // 2010 & 2013 "14 mode" break; case 15: // 2013 break; }


7

Looks like the trick is to use list.Folders: foreach (SPListItem folder in myDiscussionList.Folders) { // do something } Source: How to Read All Discussions and Replies


6

Solution moved from comment: alert("Item containing ‘announce’ found! \nTitle: " + listEnumerator.get_current().get_item("Author").get_lookupValue());


6

there are several good ways of retreiving data. Each has its pros and cons. Typically Search would be used when you want to list some, but not all, data (not all can be exposed) and when you want to retrieve data across site collectons. SPQuery, SPSiteDataQuery and PortalSitemapProvider are good candidates if you are on the same site collection. See some ...


6

Leading on from @tylerrrr07's answer, there's another overload of GetItemsWithUniquePermissions which may be of use to you: MSDN: SPList.GetItemsWithUniquePermissions Method (int maxItemToReturn, bool folderOnly) You could then avoid the potentially huge result set from running the method by using the following: SPList.GetItemsWithUniquePermissions(1, ...


6

In a way yes - try using the "Link to a document" content type instead of the document. or use the "Send To" option which would create a syncronized copy of the document (multiple locations possible) which can be easily maintained. In the case of Send To, yes, i believe -which should also answer your 3rd question (but if not) Hope it helps, C:\Marius


6

In IE (version > 6) SignOut.aspx uses ClearAuthenticationCache as a client side command. This does not work for Firefox. I found this example on StackOverflow that might work for you https://stackoverflow.com/questions/31326/is-there-a-browser-equivalent-to-ies-clearauthenticationcache


6

Rafal, You can use: Microsoft.SharePoint.Administration.SPAdministrationWebApplication centralWeb = SPAdministrationWebApplication.Local;


5

Best practice is to use SPQuery on the list to return list items that match your criteria. See the software performance boundaries documentation here has some details (pertaining to 2007): http://technet.microsoft.com/en-us/library/cc287790%28office.12%29.aspx 2010 info is here: http://technet.microsoft.com/en-us/library/cc262787.aspx There was another ...


5

Take a look at Property Class There are two types of user profile properties: Regular - Defines the property data type and the corresponding user profile flags. Section - Property that serves as a separator for user interface grouping purposes. In order to move properties 'into' section you just need to reorder them. I am providing a ...


5

Using API, you won't have any limitation on what you can done. Using Web Services you will be able to do a lot of things, but mainly concerning structure and/or data query Using Rest services, you will only be able to perform CRUD operation. It actually depends on you requirements. There is also a 4th way, that requires a bit of more work : use the OOB ...


5

I had the same problem today when copying. Difference for me I was copying from one column to another. Both columns were managed metadata columns pointing to the same managed metadata. The reason I kept getting the error was because the column I read in was a Managed Metadata that allowed multiple values, the second column didn't. Therefore Specified ...


5

Link to document content type is what you want as Marius mentioned. You can extend the content type to include any metadata you need allowing you to have different sets of metadata for the same file in different locations.


5

You can use the CAML query from the default view if you want, but note that you're then using both the sort order as well as any filtering from that view. var query = new SPQuery(); query.Query = list.DefaultView.Query; var items = list.GetItems(query);


5

You need to call context.executeQueryAsync And then try to get the item count in the success method. UPDATE You are not specifying the query in SP.List.getItems(query_); Example: var clientContext = new SP.ClientContext(siteUrl); var oWebsite = clientContext.get_web(); this.collList = oWebsite.get_lists(); list = collList.getByTitle('Urgent Alerts'); var ...


5

It looks like you are writing a server-side object model code in your custom application page that uses SPSite or SPWeb objects but you didn't dispose these objects and this is cause wasting system resources. so try to dispose these objects to release its allocated memory as the following: To dispose SPWeb object, it's preferred to use Using statement as ...


Only top voted, non community-wiki answers of a minimum length are eligible