0
votes

Working in VB.Net, using the Microsoft.Graph api communicate with sharepoint.

I have a list on a sharepoint site.

Lets say:

List name : ListTestName

Columns: ListColumnTest1, ListColumnTest2, ListColumnTest3

Dim queryFields As List(Of QueryOption) = New List(Of QueryOption) From {New QueryOption("$expand", "fields")}
Dim items As IListItemsCollectionPage = Await GraphClient.Sites(sharepointSessionId).Lists("ListTestName").Items.Request(queryFields).GetAsync()

This is the code I have to grab the list and trying to get all of the fields (columns) but when I look into the Fields in the "Items" variable I do not see any of the fields that I have added to the list. I only see the sharepoint fields such as "title" or "Id"

I really dont understand why this is not working.

Even when I look via the the graph-explorer site (https://developer.microsoft.com/en-us/graph/graph-explorer) using:

GET https://graph.microsoft.com/v1.0/sites/<SiteId's>/lists/ListTestName/items?expand=fields

I do not see my custom columns However if I try and filter directly to one of the columns like this :

GET https://graph.microsoft.com/v1.0/sites/<SiteId's>/lists/ListTestName/items?expand=fields(select=ListColumnTest1)

This does seem to have returned back my custom field.

Thus I tried adding to the query field {New QueryOption("$expand", "fields(select=ListColumnTest1")} this just crashed when I called the request.

Edit: I asked this question slightly wrong and will be posting a second question that is more to what I need. However, below the question is marked correct because their solution is the correct solution for what I asked. :)

2

2 Answers

1
votes

Have you try this endpoint?

GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}?expand=columns,items(expand=fields)

I could get the custom columns with this endpoint. enter image description here

Updated:

IListColumnsCollectionPage columns = graphClient.Sites["b57886ef-vvvv-4d56-ad29-27266638ac3b,b62d1450-vvvv-vvvv-84a3-f6600fd6cc14"].Lists["538191ae-7802-43b5-90ec-c566b4c954b3"].Columns.Request().GetAsync().Result;

enter image description here

0
votes

I would avoid to create QueryOption. Try to use Expand and Select method.

Example (C#...apologise I'm not familiar with VB but I hope it will easy for you to rewrite it):

await GraphClient.client.Sites[sharepointSessionId].Lists["ListTestName"].Items.Request()
            .Expand(x => new
                    {
                        ListColumnTest1 = x.Fields.AdditionalData["ListColumnTest1"],
                        ListColumnTest2 = x.Fields.AdditionalData["ListColumnTest2"]
                    })
            .Select(x => new
                    {
                        ListColumnTest1 = x.Fields.AdditionalData["ListColumnTest1"],
                        ListColumnTest2 = x.Fields.AdditionalData["ListColumnTest2"]
                    })
            .GetAsync();