Penyelesaian: SPQuery Tidak Carian Folder

Ini adalah melaksanakan minggu lalu untuk "berubah" penyelesaian untuk pelanggan yang menggunakan BDC dan SPQuery dan berlari ke dalam beberapa kesukaran yang menggunakan SPQuery terhadap sebuah perpustakaan dokumen yang mengandungi folder. Bottom line: Peruntukkan "recursive" kepada sifat pandangan daripada pertanyaan.

Senario Saya:

  • Pada Isnin, Saya memuat naik dokumen dan membekalkan beberapa data meta.
  • Minggu berikutnya, Saya upload dokumen baru. Banyak dokumen baru ini meta data berdasarkan dokumen yang aku upload pada hari Isnin (yang kita panggil "dokumen induk").
  • Kami telah mencipta satu bahagian depan perkhidmatan web yang menyediakan antara muka yang mesra BDC ke senarai supaya pengguna boleh mengesan bahawa dokumen Isnin melalui carian tajuk.
  • Lajur data BDC menyediakan antara muka mesra pengguna yang. (Ini adalah sebahagian daripada usaha saya dengan menggunakan BDC untuk ruangan Lookup lebih mesra).

Akhir BDC façade perkhidmatan menggunakan pertanyaan seperti ini untuk melakukan lookup yang:

 // Menggunakan alat U2U untuk membantu dalam menjana pertanyaan ini CAML.
      oQuery.Query =
        "<Jika>";

      jika (titleFilter.Length > 0)
        oQuery.Query   =
          "  <Dan>";

      oQuery.Query   =
        "    <Dan>" +
        "      <GEQ>" +
        "        <Nama FieldRef =  "DocumentId" />" +
        "        <Nilai jenis =  "Text">" + MinID + "</Nilai>" +
        "      </GEQ>" +
        "      <Leq>" +
        "        <Nama FieldRef =  "DocumentId" />" +
        "        <Nilai jenis =  "Text">" + maxId + "</Nilai>" +
        "      </Leq>" +
        "    </Dan>";

      jika (titleFilter.Length > 0)
        oQuery.Query   =
          "    <Mengandungi>" +
          "      <Nama FieldRef =  "Title" />" +
          "      <Nilai jenis =  "Text">" + titleFilter + "</Nilai>" +
          "    </Mengandungi>" +
          "  </Dan>";
      oQuery.Query   =
        "</Jika>";

Pada peringkat awal pembangunan, ini bekerja hebat. Walau bagaimanapun, kami memperkenalkan folder dalam direktori untuk menyelesaikan beberapa masalah dan tiba-tiba, pengutip BDC saya tidak akan mengembalikan sebarang keputusan. Saya dikesan ini kepada hakikat bahawa SPQuery itu tidak akan kembali sebarang keputusan. Kita menggunakan folder terutamanya untuk membenarkan beberapa fail dengan nama yang sama hendak dimuatkan tetapi dengan data meta yang berlainan. Bilakah fail yang dimuat naik, kita membuat folder berdasarkan ID item senarai dan kemudian memindahkan fail di sana (Saya menulis tentang itu di sini; kami telah keputusan bercampur-campur dengan pendekatan ini tetapi pada keseluruhannya, ia berfungsi dengan baik). Pengguna tidak mengambil berat tentang folder dan malah, tidak benar-benar memahami bahawa terdapat sebarang folder. Kami telah mengkonfigurasi semua pandangan mengenai Perpustakaan untuk Tunjuk butiran tanpa mengambil kira folder.

Saya terkena masalah ini dua kali sebagai pelaksanaan teknikal berkembang dan diselesaikan ia berbeza setiap kali. Kali pertama, Saya tidak menggunakan operator mengandungi pertanyaan. Tanpa operator mengandungi, Saya telah dapat menyelesaikan masalah ini dengan menyatakan pandangan di atas contructor yang SPQuery. Alih-alih menggunakan pengeluar lalai:

SPList oList = web.Lists["Dokumen-dokumen"];

SPQuery oQuery = baru SPQuery();

Saya bukannya menggunakan pembina yang dinyatakan pandangan:

SPList oList = web.Lists["Dokumen-dokumen"];

SPQuery oQuery = baru SPQuery(oList.Views["Semua dokumen"]);

Yang menyelesaikan masalah dan saya mula untuk mendapatkan keputusan yang saya.

Saya kemudian menambah operator mengandungi ke dalam campuran dan ia pecah lagi. Ternyata bahawa operator mengandungi, setakat yang saya boleh memberitahu, tidak berfungsi dengan pandangan cara yang sama seperti GEQ yang lebih mudah / Pengendali LEQ. Saya melakukan beberapa pencarian dan belajar bahawa pertanyaan yang ViewAttributes hendaklah disetkan ke "Recursive", seperti dalam:

oQuery.ViewAttributes = "Skop = "Recursive"";

Yang diselesaikan masalah yang mengandungi. Malah, ini juga menyelesaikan masalah carian asal saya dan jika saya telah dinyatakan sifat rekursi kali pertama, Saya tidak akan menghadapi masalah lagi.

Hakikat bahawa SPQuery berasaskan pandangan bekerja untuk sesetengah pengendali (GEQ/LEQ) dan bukan orang lain (MENGANDUNGI), ditambah pula dengan hakikat bahawa KPI seolah-olah tidak berfungsi langsung dengan perpustakaan dokumen folder yang mengandungi membawa saya untuk mempercayai SPQuery yang mempunyai beberapa isu-isu ortogon.

Terima kasih khas:

</akhir>

Langgan ke blog saya!

3 pemikiran untuk "Penyelesaian: SPQuery Tidak Carian Folder

  1. Tiada nama

    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 U5A battery,
    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 V1000 bateri,
    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 compaq N600 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 pp2060 bateri,
    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 N110 bateri,
    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 ze4000 bateri,
    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 700m 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 dell bateri 8u443,
    http://www.batteryfast.co.uk/dell/312-0058.htm dell 312-0058 bateri,

    Balas

Tinggalkan Jawapan

alamat e-mel anda tidak akan diterbitkan. Ruangan yang diperlukan ditanda *