Zgjidhje: SPQuery Does Not Kërko Dosjet

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. Bottom line: assign "recursive" për atribut pamje të query.

Skenari im:

  • Të hënën, Unë ngarkoj një dokument dhe të furnizimit me disa të dhëna të meta.
  • Javën e ardhshme, 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").
  • Ne kemi krijuar një fasadë të shërbimit të internetit që ofron një ndërfaqe QZHB-miqësore në listë në mënyrë që përdoruesit mund të lehtë të gjetur atë dokument e hëna nëpërmjet një kërkim të titullit.
  • A BDC data column provides a friendly user interface. (Kjo është pjesë e përpjekjes sime në përdorimin e QZHB për një kolonë Lookup më miqësore).

Përfundimtar QZHB Fasada shërbim përdor një pyetje si kjo për të bërë lookup:

 // U2U mjet i përdorur për të ndihmuar në gjenerimin këtë query CAML.
      oQuery.Query =
        "<Ku>";

      nëse (titleFilter.Length > 0)
        oQuery.Query   =
          "  <Dhe>";

      oQuery.Query   =
        "    <Dhe>" +
        "      <Geq>" +
        "        <FieldRef Name=\"DocumentId\" />" +
        "        <Value Type=\"Text\">" + MinID + "</Vlerë>" +
        "      </Geq>" +
        "      <Leq>" +
        "        <FieldRef Name=\"DocumentId\" />" +
        "        <Value Type=\"Text\">" + maxId + "</Vlerë>" +
        "      </Leq>" +
        "    </Dhe>";

      nëse (titleFilter.Length > 0)
        oQuery.Query   =
          "    <Përmban>" +
          "      <FieldRef Name=\"Title\" />" +
          "      <Value Type=\"Text\">" + titleFilter + "</Vlerë>" +
          "    </Përmban>" +
          "  </Dhe>";
      oQuery.Query   =
        "</Ku>";

Gjatë fazës fillestare të zhvillimit, this worked great. Megjithatë, ne kemi prezantuar dosjet në directory për të zgjidhur disa probleme dhe papritmas, 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, ne kemi krijuar një dosje të bazuar në ID e list item-së dhe pastaj të lëvizë skedarin atje (Kam shkruar në lidhje me atë këtu; ne kemi pasur rezultate të përziera me këtë qasje, por në tërësi, ajo është duke punuar mirë). 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 = i ri SPQuery();

Unë në vend të përdorur një konstruktor që specifikuar një pamje:

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

SPQuery oQuery = i ri SPQuery(oList.Views["All Documents"]);

Kjo zgjidhur problemin dhe kam filluar për të marrë rezultatet e mia.

I then added the CONTAINS operator into the mix and it broke again. It turns out that the CONTAINS operator, aq sa unë mund të them, nuk punojnë me pamje të njëjtën mënyrë si një GEQ thjeshtë / LEQ operators. I did some searching and learned that the query’s ViewAttributes should be set to "Recursive", si në:

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

That solved the problem for CONTAINS. Në të vërtetë, kjo zgjidhur edhe problemin e mia Kërko origjinal dhe në qoftë se unë kam specifikuar atribut rekursive për herë të parë, Unë nuk do të kandidojë në çështjen përsëri.

Fakti që një pikëpamje e bazuar SPQuery punon për disa operatorëve (GEQ/LEQ) dhe jo të tjerët (PËRMBAN), shoqëruar me faktin se KPIs nuk duket për të punuar në të gjitha me dosje që përmbajnë bibliotekat dokument shpie mua të besoj se ka disa çështje SPQuery orthogonality.

Falënderime të veçanta:

</fund>

Abonohen në blogun tim!

3 mendime mbi "Zgjidhje: SPQuery Does Not Kërko Dosjet

  1. No name

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

Lini një Përgjigju me Paul Galvin Cancel përgjigje

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar *