Hi,
I am trying to make use of the PageHandle when retrieving all users from the member service. I have code that sort-of works but I notice that the page handle doesn't know when it's done. What I have noticed is that eventually the MemberSearchResults will have no results. I guess the question I'm asking is does the Page Handle work when doing a member search. If it is, what am I doing wrong? Neither the pageHandle.FinalPage nor .NumberOfPages features are being set.
-Hugh
PS if there is a more efficient way of getting all user names into a string array rather than having to iterate a list object each time, that would be nice to have as well.
Code follows...
public string[] GetUsernames()
{
List<string> memberList = new List<string>();
MemberSearchOptions options = new MemberSearchOptions();
options.PageSize = 5;
//options.ColumnColumn = SearchColumn.NAME);
options.Filter = CWS.SearchFilter.USER;
options.Scope =SearchScope.SYSTEM;
options.Matching = SearchMatching.STARTSWITH;
options.Search = "" ; //Search criteria . "" => Every result
bool hasMorePages = true;
int pageCounter = 0;
PageHandle pageHandle = _memberClient.SearchForMembers(ref otAuthToken, options);
while (hasMorePages && pageCounter<100)
{
Console.WriteLine(String.Format("Page {0} of {1}", pageHandle.PageNumber, pageHandle.NumberOfPages));
MemberSearchResults results = _memberClient.GetSearchResults(ref otAuthToken, pageHandle);
if (results.Members != null && results.Members.Length > 0)
{
Console.WriteLine("Have results");
foreach (Member member in results.Members)
{
Console.WriteLine("User " + member.Name);
memberList.Add(member.Name);
}
}
if (pageHandle.PageNumber>= pageHandle.NumberOfPages)
hasMorePages = false;
else
pageHandle.PageNumber++;
pageCounter++;
}
return memberList.ToArray();