كيف يمكنني الحصول على spfielduservalue الصحيح لاستخدام spsitedataquery إلى المهام الإجمالية لمستخدم معين؟

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/91625

  •  10-12-2019
  •  | 
  •  

سؤال

أحاول جمع جميع مهام نوع محتوى معين لمستخدم معين.لإنجاز هذا أستخدم spsitedataquery الذي يشبه هذا: giveacodicetagpre.

يعمل بشكل جيد إذا كنت ترغب فقط في تصفية نوع المحتوى، لكن تصفية فشل المستخدم.

هنا هو ما أعتقد أن المشكلة هي .. يحتوي الحقل المعين على القيم التي تبدو مثل هذا giveacodicetagpre.

ولكن اسم تسجيل الدخول العادي يحتوي على سلسلة المطالبات والمجال ويبدو أن هذا giveacodicetagpre.

حاولت إنشاء spfielduservalue للحصول على سلسلة المستخدم نفسها الموجودة في الحقل المعين .. مثل هذا: giveacodicetagpre.

.. لكن بعد ذلك، سأحصل على قيمة مثل هذا: giveacodicetagpre.

.. وما زلت لا أحصل على نتائج من استعلامي ..

كيف يمكنني الحصول على السلسلة الصحيحة لتنفيذ استفسالي؟

هل كانت مفيدة؟

المحلول

By changing the CAML like this:

string where = @"<Where>
                                        <And>
                                            <BeginsWith>
                                                <FieldRef Name='ContentTypeId'/>
                                                <Value Type='Text'>0x0108010031C20CDC28544f93B27958D36ACBE2F5</Value>
                                            </BeginsWith>
                                            <Eq>
                                                <FieldRef Name='AssignedTo' LookupId='TRUE' />
        <Value Type='Integer'><UserID /></Value>
                                            </Eq>
                                        </And>
                                     </Where>";
query.Query = where;
DataTable results = web.GetSiteData(query);

it will fetch for current user :)

If you need to specify another user you can use:

string where = String.Format(@"<Where>
                                        <And>
                                            <BeginsWith>
                                                <FieldRef Name='ContentTypeId'/>
                                                <Value Type='Text'>0x0108010031C20CDC28544f93B27958D36ACBE2F5</Value>
                                            </BeginsWith>
                                            <Eq>
                                                <FieldRef Name='AssignedTo' LookupId='TRUE' />
                                                <Value Type='Integer'>{0}</Value>
                                            </Eq>
                                        </And>
                                     </Where>", userValue.ToString());
query.Query = where;
DataTable results = web.GetSiteData(query);

and just make sue you have the ID of the user in userValue

نصائح أخرى

The CAML Query for fetching the values for current user is:

"<Where><Eq><FieldRef Name='AssignedTo' /><Value Type='Integer'><UserID Type='Integer' /></Value></Eq></Where>";

And for another user it should be as mentioned by @Robert.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top