Solved

Retrieve from Sharepoint 2010 list of all sites in VB

Posted on 2015-01-27
5
275 Views
Last Modified: 2016-02-18
How can I retrieve the current list of all sites in Sharepoint through VB using the Imports Microsoft.SharePoint.Client ?
My goal is to check whether the site is already created before VB creates a new Site. I got the site creation down, but now I need to check and see if the site has already been created.
0
Comment
Question by:BKennedy2008
  • 3
  • 2
5 Comments
 
LVL 31

Expert Comment

by:Jamie McAllister MVP
Comment Utility
The API calls are identical for VB, just the surrounding code is a little different.

Here's a C# example you can port easily.

using(SPWeb web = site.OpenWeb("/anotherWeb/"))
{
   if(web.Exists)
   {
       string title = web.Title;
   }
}

Open in new window

0
 

Author Comment

by:BKennedy2008
Comment Utility
Can you put your logic within this code below taht creates the site? Thanks

 Dim clientContext As New ClientContext("http://sps.xxxx.com/")
        Dim collWeb As WebCollection = clientContext.Web.Webs

        Dim webCreationInfo As New WebCreationInformation()
        webCreationInfo.Title = Job_Number.Text
        webCreationInfo.Description = JobNme.Text
        webCreationInfo.Language = 1033
        webCreationInfo.Url = Job_Number.Text
        webCreationInfo.UseSamePermissionsAsParentSite = True
        webCreationInfo.WebTemplate = TemplateID

        Dim oNewWebsite As Web = collWeb.Add(webCreationInfo)
        Try
            clientContext.ExecuteQuery()
        Catch ex As Exception
            MsgBox(ex.Message)
            Me.Cursor = Cursors.Default
            Exit Sub
        End Try
0
 
LVL 31

Accepted Solution

by:
Jamie McAllister MVP earned 500 total points
Comment Utility
Use of Client Object Model changes my answer a little;

 Private Function WebExists(ByVal siteUrl As String, ByVal webUrl As String) As Boolean
    'connect to the root site
    Imports (ClientContext context = New ClientContext(siteUrl))
    {
        ' load up the root web object but only 
        ' specifying the sub webs property to avoid 
        ' unneeded network traffic
        Dim web As var =  context.Web 
        context.Load(web, w =&gt w.Webs)
        context.ExecuteQuery()
        ' use a simple linq query to get any sub webs with the URL we want to check
        Dim subWeb As var = (from w in web.Webs where w.Url  =  webUrl select w).SingleOrDefault() 
        If Not subWeb Is Nothing Then
          ' if found true
          Return True
        End If
      }
      ' default to false...
      Return False
    End Function
 
 If Not WebExists("http://sps.xxxx.com/", "http://sps.xxxx.com/");
 
 Dim clientContext As New ClientContext("http://sps.xxxx.com/")
        Dim collWeb As WebCollection = clientContext.Web.Webs

        Dim webCreationInfo As New WebCreationInformation()
        webCreationInfo.Title = Job_Number.Text
        webCreationInfo.Description = JobNme.Text
        webCreationInfo.Language = 1033
        webCreationInfo.Url = Job_Number.Text
        webCreationInfo.UseSamePermissionsAsParentSite = True
        webCreationInfo.WebTemplate = TemplateID

        Dim oNewWebsite As Web = collWeb.Add(webCreationInfo)
        Try
            clientContext.ExecuteQuery()
        Catch ex As Exception
            MsgBox(ex.Message)
            Me.Cursor = Cursors.Default
            Exit Sub
        End Try
		
		bool WebExists(string siteUrl, string webUrl)
{
    //connect to the root site
    using (ClientContext context = new ClientContext(siteUrl))
    {
        // load up the root web object but only 
        // specifying the sub webs property to avoid 
        // unneeded network traffic
        var web = context.Web;
        context.Load(web, w => w.Webs);
        context.ExecuteQuery();
        // use a simple linq query to get any sub webs with the URL we want to check
        var subWeb = (from w in web.Webs where w.Url == webUrl select w).SingleOrDefault();
        if (subWeb != null)
        {
          // if found true
          return true;
        }
      }
      // default to false...
      return false;
}
End If

Open in new window

0
 

Author Comment

by:BKennedy2008
Comment Utility
I reduced it to this, and works great. Thanks for a starting point
Private Sub getSubWebs(path As String)
        Try
            Dim clientContext As New ClientContext(path)
            Dim oWebsite As Web = clientContext.Web
            clientContext.Load(oWebsite, Function(website) website.webs)
            clientContext.ExecuteQuery()

            For Each orWebsite As Web In oWebsite.Webs
                dt.Rows.Add(orWebsite.Title)
            Next
            DataGridView2.DataSource = dt
        Catch ex As Exception
        End Try


    End Sub
0
 

Author Comment

by:BKennedy2008
Comment Utility
I've requested that this question be closed as follows:

Accepted answer: 0 points for BKennedy2008's comment #a40573850
Assisted answer: 500 points for Jamie McAllister MVP's comment #a40573187

for the following reason:

Modified to VB
0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

Note:  There are two main ways to deploy InfoPath forms:  Server-side and directly through the SharePoint site.  Deploying a server-side InfoPath form means the form is approved by the Administrator, thus allowing greater functionality in the form. …
Microsoft SharePoint Foundation 2010 and Microsoft SharePoint Server 2010 do not offer the option to configure the location of the SharePoint diagnostic trace log files during installation.  This can, however, be configured through Central Administr…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now