简体   繁体   中英

NAV Web Services getting data in chunks using C#

I am a bit new to NAV and so far I have published web services on NAV and have been able to consume these SOAP web services using C#.

Now, the data has increased and its taking longer to load. I have an idea of querying the data in chunks (eg chunks of 10) using Datatables , but this I am yet too figure out how to set limits and offsets.

Here is my C# code to read the NAV soap service

public string getItemCardList(itemCardService_Service itemCardServiceObj, List<itemCardService_Filter> filter)
{
    serializer.MaxJsonLength = 50000000;
    return serializer.Serialize(itemCardServiceObj.ReadMultiple(filter.ToArray(), null, 0));
}

After some several searches I have gotten the answer on the [MSDN Website][ https://msdn.microsoft.com/en-us/library/ff477110.aspx] and modified it to work for me.

public string holder()
        {
           const int fetchSize = 10;
           string bookmarkKey = null;

            List<itemCardService> itemList = new List<itemCardService>();
            //Read items data in pages of 10
            itemCardService[] results = itemCardServiceObj.ReadMultiple(filter.ToArray(), bookmarkKey, fetchSize);
            while(results.Length > 0)
            {
                bookmarkKey = results.Last().Key;
                itemList.AddRange(results);
                results = itemCardServiceObj.ReadMultiple(filter.ToArray(), bookmarkKey, fetchSize);
            }
            serializer.MaxJsonLength = 50000000;
            return serializer.Serialize(itemList);
        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM