public static DataTable GetListItemJustFolders()
{
string query = "<mylistitemrequest><Query><Where><Eq><FieldRef Name=\"FSObjType\" /><Value Type=\"Lookup\">1</Value></Eq></Where></Query><ViewFields><FieldRef Name=\"EncodedAbsUrl\"/><FieldRef Name=\"ID\" /><FieldRef Name=\"FileRef\" /><FieldRef Name=\"ID\" /><FieldRef Name=\"Title\" /></ViewFields><QueryOptions></QueryOptions></mylistitemrequest>";
DataTable dt = null;
using(listservice.Lists listProxy = new listservice.Lists())
{
listProxy.UseDefaultCredentials = true;
XmlDocument doc = new XmlDocument();
doc.LoadXml(query);
XmlNode queryNode = doc.SelectSingleNode("//Query");
XmlNode viewNode = doc.SelectSingleNode("//ViewFields");
XmlNode optionNode = doc.SelectSingleNode("//QueryOptions");
XmlNode
retNode = listProxy.GetListItems("Shared Documents", string.Empty,
queryNode, viewNode, string.Empty, optionNode,
"e5bc34ff-6cde-4fee-aa4c-356baa57b37b");
DataSet ds = new DataSet();
using (StringReader sr = new StringReader(retNode.OuterXml))
ds.ReadXml(sr);
if (ds.Tables["Row"] != null && ds.Tables["Row"].Rows.Count > 0)
{
var folderUrls = from f in ds.Tables["Row"].AsEnumerable() select f["ows_EncodedAbsUrl"];
dt = ds.Tables["Row"].Copy();
foreach (string folderUrl in folderUrls)
{
GetListItemSubFolders(folderUrl, dt);
}
}
}
return dt;
}
public static void GetListItemSubFolders(string parentFolder, DataTable retTable)
{
string query = "<mylistitemrequest><Query><Where><Eq><FieldRef Name=\"FSObjType\" /><Value Type=\"Lookup\">1</Value></Eq></Where></Query><ViewFields><FieldRef Name=\"EncodedAbsUrl\"/><FieldRef Name=\"ID\" /><FieldRef Name=\"Title\" /></ViewFields><QueryOptions><Folder>" + parentFolder + "</Folder></QueryOptions></mylistitemrequest>";
DataTable dt = null;
using (listservice.Lists listProxy = new listservice.Lists())
{
listProxy.UseDefaultCredentials = true;
XmlDocument doc = new XmlDocument();
doc.LoadXml(query);
XmlNode queryNode = doc.SelectSingleNode("//Query");
XmlNode viewNode = doc.SelectSingleNode("//ViewFields");
XmlNode optionNode = doc.SelectSingleNode("//QueryOptions");
XmlNode
retNode = listProxy.GetListItems("Shared Documents", string.Empty,
queryNode, viewNode, string.Empty, optionNode,
"e5bc34ff-6cde-4fee-aa4c-356baa57b37b");
DataSet ds = new DataSet();
using(StringReader sr = new StringReader(retNode.OuterXml))
ds.ReadXml(sr);
if (ds.Tables["Row"] != null && ds.Tables["Row"].Rows.Count > 0)
{
var folderUrls = from f in ds.Tables["Row"].AsEnumerable() select f["ows_EncodedAbsUrl"];
dt = ds.Tables["Row"].Copy();
foreach (string folderUrl in folderUrls)
{
GetListItemSubFolders(folderUrl, dt);
}
retTable.Merge(dt);
}
}
}
}
}