Решение: SPQuery не папки со пребарување

This past week I was implementing an "evolving" solution for a client that uses BDC and SPQuery and ran into some difficulty using SPQuery against a document library containing folders. Крајна линија: assign "recursive" на погледот атрибут на барањето.

Моето сценарио:

  • Во понеделник, Јас испратите документот и снабдување со некои мета податоци.
  • На следната недела, I upload a new document. Much of this new document’s meta data is based on the document I uploaded on Monday (which we call the "master document").
  • Ние направивме веб сервис фасада која обезбедува ЦРБ-friendly интерфејс на листата, така што корисниците можат лесно да се лоцира кој документ понеделник преку насловот пребарување.
  • A BDC data column provides a friendly user interface. (Ова е дел од мојот обид за користење на ЦРБ за повеќе пријателски Пронајди колона).

Конечниот ЦРБ фасада сервис користи за пребарување како ова да го стори пребарување:

 // Користи U2U алатка за да им помогне во генерирање на оваа CAML пребарување.
      oQuery.Query =
        "<Каде>";

      ако (titleFilter.Length > 0)
        oQuery.Query   =
          "  <И>";

      oQuery.Query   =
        "    <И>" +
        "      <Geq>" +
        "        <FieldRef Name=\"DocumentId\" />" +
        "        <Value Type=\"Text\">" + MinID + "</Вредност>" +
        "      </Geq>" +
        "      <Leq>" +
        "        <FieldRef Name=\"DocumentId\" />" +
        "        <Value Type=\"Text\">" + maxId + "</Вредност>" +
        "      </Leq>" +
        "    </И>";

      ако (titleFilter.Length > 0)
        oQuery.Query   =
          "    <Содржи>" +
          "      <FieldRef Name=\"Title\" />" +
          "      <Value Type=\"Text\">" + titleFilter + "</Вредност>" +
          "    </Содржи>" +
          "  </И>";
      oQuery.Query   =
        "</Каде>";

Во текот на почетната фаза на развој, this worked great. Сепак, воведовме папки во директориумот за решавање на некои проблеми и одеднаш, my BDC picker wouldn’t return any results. I tracked this down to the fact that the SPQuery would never return any results. We used folders primarily to allow multiple files with the same name to be uploaded but with different meta data. When the file is uploaded, ние се создаде папка врз основа на проект на елемент во листата и потоа се пресели на датотека таму (Напишав за тоа тука; имавме мешани резултати со овој пристап, но во целина, тоа е работа добро). The user don’t care about folders and in fact, don’t really understand that there are any folders. We have configured all the views on the library to show items without regard to folders.

I hit this problem twice as the technical implementation evolved and solved it differently each time. The first time, I wasn’t using the CONTAINS operator in the query. Without a CONTAINS operator, I was able to solve the problem by specifying the view on the SPQuery’s contructor. Instead of using the default constructor:

SPList oList = web.Lists["Documents"];

SPQuery oQuery = нови SPQuery();

Јас наместо да се користи конструктор дека одреден поглед:

SPList oList = web.Lists["Documents"];

SPQuery oQuery = нови SPQuery(oList.Views["All Documents"]);

Дека се реши проблемот и јас почнав да се добие моите резултати.

I then added the CONTAINS operator into the mix and it broke again. It turns out that the CONTAINS operator, толку колку што можам да кажам, не работи со поглед на ист начин како и поедноставно GEQ / LEQ operators. I did some searching and learned that the query’s ViewAttributes should be set to "Recursive", како и во:

oQuery.ViewAttributes = "Scope=\"Recursive\"";

That solved the problem for CONTAINS. Всушност, ова исто така реши мојот оригинален пребарување проблемот и ако имав наведени на рекурзивен атрибут прв пат, Јас не би се кандидира во прашање повторно.

Фактот дека цел-базирани SPQuery работи за некои оператори (GEQ/LEQ) а други не (СОДРЖИ), заедно со фактот дека KPIs се чини, не да работат на сите со папка содржат документ библиотеки ме тера да верувам дека SPQuery има некои orthogonality прашања.

Посебна благодарност:

  • Добрата луѓе во U2U и нивната алатка за пребарување.
  • Мајкл Hoffer е одлично "учење преку правење" блог пост, коментари и одговори.

</крајот>

Да се ​​претплатите на мојот блог!

3 размислувања за "Решение: SPQuery не папки со пребарување

  1. Нема име

    http://www.batteryfast.co.uk/asus/w3v.htm Asus w3v батерија,
    http://www.batteryfast.co.uk/asus/w3000a.htm asus w3000a battery,
    http://www.batteryfast.co.uk/asus/w3000.htm Asus w3000 батерија,
    http://www.batteryfast.co.uk/asus/w3000v.htm Asus w3000v батерија,
    http://www.batteryfast.co.uk/asus/a31-s5.htm Asus A31-S5 батерија,
    http://www.batteryfast.co.uk/asus/a32-s5.htm ASUS A32-S5 батерија,
    http://www.batteryfast.co.uk/asus/s52n.htm Asus s52n батерија,
    http://www.batteryfast.co.uk/asus/s5000.htm Asus s5000 батерија,
    http://www.batteryfast.co.uk/asus/s5200n.htm Asus s5200n батерија,
    http://www.batteryfast.co.uk/asus/s5n.htm Asus s5n батерија,
    http://www.batteryfast.co.uk/asus/90-naa1b1000.htm Asus 90-naa1b1000 батерија,
    http://www.batteryfast.co.uk/asus/s2691061.htm Asus s2691061 батерија,
    http://www.batteryfast.co.uk/asus/a42-v6.htm Asus a42-V6 батерија,
    http://www.batteryfast.co.uk/asus/a32-u5.htm ASUS A32-U5 батерија,
    http://www.batteryfast.co.uk/asus/u5f.htm Asus u5f батерија,
    http://www.batteryfast.co.uk/asus/u5a.htm Asus батерија U5A,
    http://www.batteryfast.co.uk/asus/u5f.htm Asus u5f батерија,
    http://www.batteryfast.co.uk/asus/u5.htm Asus U5 батерија,
    http://www.batteryfast.co.uk/compaq/nw8000.htm Compaq nw8000 батерија,
    http://www.batteryfast.co.uk/compaq/nc8000.htm Compaq nc8000 батерија,
    http://www.batteryfast.co.uk/compaq/v1000.htm Compaq v1000 батерија,
    http://www.batteryfast.co.uk/compaq/nc6000.htm Compaq nc6000 батерија,
    http://www.batteryfast.co.uk/compaq/nx5000.htm Compaq nx5000 батерија,
    http://www.batteryfast.co.uk/compaq/n600.htm Compaq n600 батерија,
    http://www.batteryfast.co.uk/compaq/n600c.htm Compaq n600c батерија,
    http://www.batteryfast.co.uk/compaq/n610c.htm Compaq N610C батерија,
    http://www.batteryfast.co.uk/compaq/n610v.htm Compaq n610v батерија,
    http://www.batteryfast.co.uk/compaq/n620c.htm Compaq n620c батерија,
    http://www.batteryfast.co.uk/compaq/e500.htm Compaq E500 батерија,
    http://www.batteryfast.co.uk/compaq/e500s.htm Compaq e500s батерија,
    http://www.batteryfast.co.uk/compaq/v300.htm Compaq V300 батерија,
    http://www.batteryfast.co.uk/compaq/v500.htm Compaq V500 батерија,
    http://www.batteryfast.co.uk/compaq/pp2060.htm Compaq pp2060 батерија,
    http://www.batteryfast.co.uk/compaq/nx9000.htm Compaq nx9000 батерија,
    http://www.batteryfast.co.uk/compaq/nx9005.htm Compaq nx9005 батерија,
    http://www.batteryfast.co.uk/compaq/nx9010.htm Compaq nx9010 батерија,
    http://www.batteryfast.co.uk/compaq/nx9020.htm Compaq nx9020 батерија,
    http://www.batteryfast.co.uk/compaq/n110.htm Compaq N110 батерија,
    http://www.batteryfast.co.uk/compaq/n110s.htm Compaq n110s батерија,
    http://www.batteryfast.co.uk/compaq/pp2101x.htm Compaq pp2101x батерија,
    http://www.batteryfast.co.uk/compaq/presario-2100.htm Compaq Presario 2100 батерија,
    http://www.batteryfast.co.uk/compaq/ze4000.htm Compaq ze4000 батерија,
    http://www.batteryfast.co.uk/compaq/f4809a.htm Compaq F4809A батерија,
    http://www.batteryfast.co.uk/compaq/f4812a.htm Compaq F4812A батерија,
    http://www.batteryfast.co.uk/dell/inspiron-700m.htm Dell Inspiron 700 батеријата,
    http://www.batteryfast.co.uk/dell/inspiron-710m.htm Dell Inspiron 710M батерија,
    http://www.batteryfast.co.uk/dell/latitude-x200.htm Dell Latitude x200 батерија,
    http://www.batteryfast.co.uk/dell/8u443.htm Dell батерија 8u443,
    http://www.batteryfast.co.uk/dell/312-0058.htm Dell 312-0058 батерија,

Остави Одговори

Вашата е-маил адреса нема да бидат објавени. Задолжителни полиња се означени *