SPSiteDataQuery 格式,其实下面的是很不规范的,只是让自己了解其真正的格式。以后会弄一个类来做这方面的工作
<MatchingQuery> 
<Lists><List ID="2DF16909-AEE4-44F0-BBF5-B6E5F33F7AD6" /></Lists> 
<Webs Scope="SiteCollection" /> 
<Query> 
<OrderBy><FieldRef Name='ID'/></OrderBy> 
<Where> 
<And><And><And> 
<IsNotNull><FieldRef Name="_x0030_03aab56_x002d_bb26_x002d_4815_x002d_83d2_x002d_335e857a36f8" /></IsNotNull> 
<Eq><FieldRef Name="_x007b_634f940a_x002d_e3d8_x002d_47d3_x002d_998f_x002d_1f6cf85d6954_x007d_" /><Value Type="DateTime"><Today OffsetDays="1" /></Value></Eq> 
</And> 
<Or><Or> 
<Eq><FieldRef Name="_x007b_b65db77a_x002d_0c3d_x002d_45fb_x002d_8a79_x002d_ab4ff9bca304_x007d_" /><Value Type="Text">Hire</Value></Eq> 
<Eq><FieldRef Name="_x007b_b65db77a_x002d_0c3d_x002d_45fb_x002d_8a79_x002d_ab4ff9bca304_x007d_" /><Value Type="Text">Rehire</Value></Eq> 
</Or> 
<Eq><FieldRef Name="_x007b_b65db77a_x002d_0c3d_x002d_45fb_x002d_8a79_x002d_ab4ff9bca304_x007d_" /><Value Type="Text">Transfer</Value></Eq> 
</Or> 
</And> 
<Or> 
<Eq><FieldRef Name="_x007b_136c33c4_x002d_c3fa_x002d_457b_x002d_8640_x002d_06c403f596f2_x007d_" /><Value Type="Text">Notified</Value></Eq> 
<Eq><FieldRef Name="_x007b_136c33c4_x002d_c3fa_x002d_457b_x002d_8640_x002d_06c403f596f2_x007d_" /><Value Type="Text">Processed</Value></Eq> 
</Or></And> 
</Where></Query> 
<ViewFields><FieldRef Name="Company"/><FieldRef Name="Location"/><FieldRef Name="_x007b_b65db77a_x002d_0c3d_x002d_45fb_x002d_8a79_x002d_ab4ff9bca304_x007d_"/><FieldRef Name="FileRef"/><FieldRef Name="EncodedAbsUrl"/></ViewFields> 
</MatchingQuery>


操作:

public SPSiteDataQuery MatchingQuery
        {
            get
            {
                SPSiteDataQuery oQuery = null;
                try
                {
                    XmlNode xQuery = dJob.MatchingQuery;
                    oQuery = new SPSiteDataQuery();
                    //Changed to solve feature not installed issue.
                    //oQuery.Lists = "<Lists BaseType='1'/>";
                    oQuery.Lists = xQuery.SelectSingleNode("Lists").OuterXml;
                    oQuery.Webs = xQuery.SelectSingleNode("Webs").OuterXml;
                    oQuery.Query = xQuery.SelectSingleNode("Query").InnerXml;
                    oQuery.ViewFields = xQuery.SelectSingleNode("ViewFields").InnerXml;
                }
                catch (Exception ex)
                {
                    Log.JobErrorWrite(Name, "Job: MatchingQuery", ex.ToString());
                }
                return oQuery;
            }
        }

Applicator:

 private DataTable GetMatchItems(SPWeb Web)
        {
            DataTable DT = null;
            try
            {
                SPSiteDataQuery oQuery = JobInfo.MatchingQuery;
                DT = Web.GetSiteData(oQuery);
            }
            catch(Exception ex)
            {
                Log.JobErrorWrite(Title, "Reminder: GetMatchItems", ex.ToString());
            }
            return DT;
        }

 SPQuery:

SPQuery:
public SPListItemCollection GetItems(SPList List, string QueryString)
{
SPQuery Query = null;
SPListItemCollection ItemCollection = null;
try
{
Query = new SPQuery();
Query.Query = QueryString;
ItemCollection = List.GetItems(Query);
}
catch (Exception ex)
{
Log.JobErrorWrite(_JobName, "ListOperator: GetItems", ex.ToString());
}

return ItemCollection;
}

Operator:
string query = "<Where><Eq><FieldRef Name=\"JobStatus\" /><Value Type=\"Choice\">Activating</Value></Eq></Where>";
ListOperator oListOperator = new ListOperator(string.Empty);
SPListItemCollection ItemCollection = oListOperator.GetItems(list, query);

OR

SPQuery query = new SPQuery();
query.Query = string.Concat(
"<Where><Eq>",
"<FieldRef Name='Status'/>",
"<Value Type='CHOICE'>Not Started</Value>",
"</Eq></Where>",
"<OrderBy>",
"<FieldRef Name='DueDate' Ascending='TRUE' />",
"<FieldRef Name=’Priority’ Ascending='TRUE' />",
"</OrderBy>");

query.ViewFields = string.Concat(
"<FieldRef Name='AssignedTo' />",
"<FieldRef Name='LinkTitle' />",
"<FieldRef Name='DueDate' />",
"<FieldRef Name='Priority' />");

// Get data from a list.
string listUrl = web.ServerRelativeUrl + "/lists/tasks";
SPList list = web.GetList(listUrl);
SPListItemCollection items = list.GetItems(query);

 

posted on 2011-11-03 15:47  gzh4455  阅读(966)  评论(0编辑  收藏  举报