public XmlNode GetListItems()

in webservice/MCPermissions.cs [87:162]


        public XmlNode GetListItems(string listName, string startRow, string rowLimit)
        {
            XmlNode retVal = null;

            try
            {
                uint startRowParam = Convert.ToUInt32(startRow);
                uint rowLimitParam = Convert.ToUInt32(rowLimit);

                using (SPWeb oWebsiteRoot = SPContext.Current.Web)
                {
                    if (oWebsiteRoot != null)
                    {

                        oWebsiteRoot.Lists.IncludeRootFolder = true;
                        SPList oList = oWebsiteRoot.Lists[new Guid(listName)];

                        SPQuery listQuery = new SPQuery();
                        listQuery.Query = "<OrderBy Override=\"TRUE\"><FieldRef Name=\"FileRef\" /></OrderBy>";
                        listQuery.QueryThrottleMode = SPQueryThrottleOption.Override;
                        listQuery.ViewAttributes = "Scope=\"Recursive\"";
                        listQuery.ViewFields = "<FieldRef Name='FileRef' />";
                        listQuery.RowLimit = 1000;

                        XmlDocument doc = new XmlDocument();
                        retVal = doc.CreateElement("GetListItems", 
                            "http://schemas.microsoft.com/sharepoint/soap/directory/");
                        XmlNode getListItemsNode = doc.CreateElement("GetListItemsResponse");

                        uint counter = 0;
                        do
                        {
                            if (counter >= startRowParam + rowLimitParam)
                                break;

                            SPListItemCollection collListItems = oList.GetItems(listQuery);


                            foreach (SPListItem oListItem in collListItems)
                            {
                                if (counter >= startRowParam && counter < startRowParam + rowLimitParam)
                                {
                                    XmlNode resultNode = doc.CreateElement("GetListItemsResult");
                                    XmlAttribute idAttribute = doc.CreateAttribute("FileRef");
                                    idAttribute.Value = oListItem.Url;
                                    resultNode.Attributes.Append(idAttribute);
                                    XmlAttribute urlAttribute = doc.CreateAttribute("ListItemURL");
                                    //urlAttribute.Value = oListItem.ParentList.DefaultViewUrl;
                                    urlAttribute.Value = string.Format("{0}?ID={1}", oListItem.ParentList.Forms[PAGETYPE.PAGE_DISPLAYFORM].ServerRelativeUrl, oListItem.ID);
                                    resultNode.Attributes.Append(urlAttribute);
                                    getListItemsNode.AppendChild(resultNode);
                                }
                                counter++;
                            }
                                
                            listQuery.ListItemCollectionPosition = collListItems.ListItemCollectionPosition;

                        } while (listQuery.ListItemCollectionPosition != null);
                            
                        retVal.AppendChild(getListItemsNode);
                    }

                }
            }
            catch (SoapException soapEx)
            {
                throw soapEx;
            }
            catch (Exception ex)
            {
                SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("MCPermissions.asmx", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, "Error: "+ex.Message, ex.StackTrace);
                throw RaiseException(ex.Message, "1010", ex.Source);
            }

            return retVal;
        }