Solusi: SPQuery tidak Cari folder

Minggu saya melaksanakan terakhir ini "berkembang" solusi untuk klien yang menggunakan BDC dan SPQuery dan berlari ke dalam kesulitan menggunakan SPQuery terhadap sebuah perpustakaan dokumen yang berisi folder. Garis bawah: menetapkan "rekursif" atribut tampilan query.

Skenario saya:

  • Pada hari Senin, Saya meng-upload dokumen dan menyediakan beberapa meta data.
  • Minggu berikutnya, Saya meng-upload dokumen baru. Banyak dokumen baru ini meta data berdasarkan dokumen yang saya upload pada hari Senin (yang kita sebut "dokumen master").
  • Kami telah menciptakan façade layanan web yang menyediakan BDC-friendly interface ke daftar sehingga pengguna dapat dengan mudah menemukan dokumen Senin melalui pencarian judul.
  • Kolom data BDC menyediakan antarmuka friendly user. (Ini adalah bagian dari usaha saya menggunakan BDC untuk lebih ramah Lookup kolom).

Akhir BDC façade layanan menggunakan permintaan seperti ini untuk melakukan pencarian:

 // Menggunakan U2U tool untuk membantu dalam menghasilkan ini CAML query.
      oQuery.Query =
        "<Di mana>";

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

      oQuery.Query  
        "    <Dan>" +
        "      <Geq>" +
        "        <FieldRef nama =  "DocumentId" />" +
        "        <Jenis nilai =  "Text">" + minId + "</Nilai>" +
        "      </Geq>" +
        "      <Leq>" +
        "        <FieldRef nama =  "DocumentId" />" +
        "        <Jenis nilai =  "Text">" + maxId + "</Nilai>" +
        "      </Leq>" +
        "    </Dan>";

      Jika (titleFilter.Length > 0)
        oQuery.Query  
          "    <Berisi>" +
          "      <FieldRef nama =  "Title" />" +
          "      <Jenis nilai =  "Text">" + titleFilter + "</Nilai>" +
          "    </Berisi>" +
          "  </Dan>";
      oQuery.Query  
        "</Di mana>";

Selama tahap awal pembangunan, ini bekerja hebat. Namun, Kami memperkenalkan folder ke direktori untuk memecahkan beberapa masalah dan tiba-tiba, picker BDC saya tidak akan menghasilkan apapun. Aku melacak ini ke kenyataan bahwa SPQuery akan pernah kembali hasil apapun. Kami menggunakan folder terutama untuk memungkinkan beberapa file dengan nama yang sama untuk upload tetapi dengan meta data yang berbeda. Ketika file upload, Kami membuat folder didasarkan pada item daftar ID dan kemudian pindah file ke sana (Aku menulis tentang itu Sini; Kami sudah hasil yang beragam dengan pendekatan ini, tetapi pada seluruh, bekerja dengan baik). Pengguna tidak peduli tentang folder dan bahkan, benar-benar tidak mengerti bahwa ada folder. Kita telah mengkonfigurasi semua pandangan pada perpustakaan untuk item tanpa folder.

Aku memukul masalah ini dua kali sebagai pelaksanaan teknis berkembang dan dipecahkan itu berbeda setiap kali. Pertama kali, Saya tidak menggunakan operator berisi dalam permintaan. Tanpa operator berisi, Saya mampu memecahkan masalah dengan menentukan tampilan pada SPQuery contructor. Alih-alih menggunakan konstruktor default:

SPList oList = web.Daftar["Dokumen"];

SPQuery oQuery = baru SPQuery();

Saya malah menggunakan constructor yang ditentukan pandangan:

SPList oList = web.Daftar["Dokumen"];

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

Yang memecahkan masalah dan aku mulai mendapatkan hasil saya.

Saya kemudian menambahkan operator berisi ke dalam campuran dan itu pecah lagi. Ternyata bahwa operator berisi, Sejauh yang saya dapat memberitahu, tidak bekerja dengan pandangan dengan cara yang sama sebagai GEQ sederhana / Operator LEQ. Aku melakukan beberapa pencarian dan belajar bahwa query yang ViewAttributes harus ditetapkan untuk "Rekursif", seperti dalam:

oQuery.ViewAttributes = "Lingkup = "Recursive"";

Yang memecahkan masalah untuk berisi. Sebenarnya, Hal ini juga memecahkan masalah pencarian asli saya dan jika saya telah ditetapkan rekursif atribut pertama kalinya, Saya akan tidak memiliki berlari ke dalam masalah lagi.

Fakta bahwa berbasis lihat SPQuery bekerja untuk beberapa operator (GEQ/LEQ) dan bukan orang lain (BERISI), ditambah dengan fakta bahwa KPI tampaknya tidak bekerja sama sekali dengan berisi map dokumen perpustakaan memimpin saya untuk percaya bahwa SPQuery memiliki beberapa masalah orthogonality.

Terima kasih khusus:

  • Orang-orang baik di U2U dan mereka permintaan alat.
  • Michael Hoffer besar "belajar dengan melakukan" posting blog, Komentar dan tanggapan.

</akhir>

Berlangganan ke blog saya!

3 pemikiran tentang “Solusi: SPQuery tidak Cari folder

  1. Tidak ada nama

    http://www.batteryfast.co.uk/asus/w3v.htm Asus w3v baterai,
    http://www.batteryfast.co.uk/asus/w3000a.htm Asus w3000a baterai,
    http://www.batteryfast.co.uk/asus/w3000.htm Asus w3000 baterai,
    http://www.batteryfast.co.uk/asus/w3000v.htm Asus w3000v baterai,
    http://www.batteryfast.co.uk/asus/a31-s5.htm Asus a31-s5 baterai,
    http://www.batteryfast.co.uk/asus/a32-s5.htm Asus a32-s5 baterai,
    http://www.batteryfast.co.uk/asus/s52n.htm Asus s52n baterai,
    http://www.batteryfast.co.uk/asus/s5000.htm Asus s5000 baterai,
    http://www.batteryfast.co.uk/asus/s5200n.htm Asus s5200n baterai,
    http://www.batteryfast.co.uk/asus/s5n.htm Asus s5n baterai,
    http://www.batteryfast.co.uk/asus/90-naa1b1000.htm Asus 90-naa1b1000 baterai,
    http://www.batteryfast.co.uk/asus/s2691061.htm Asus s2691061 baterai,
    http://www.batteryfast.co.uk/asus/a42-v6.htm Asus a42-v6 baterai,
    http://www.batteryfast.co.uk/asus/a32-u5.htm Asus a32-u5 baterai,
    http://www.batteryfast.co.uk/asus/u5f.htm Asus u5f baterai,
    http://www.batteryfast.co.uk/asus/u5a.htm Asus u5a baterai,
    http://www.batteryfast.co.uk/asus/u5f.htm Asus u5f baterai,
    http://www.batteryfast.co.uk/asus/u5.htm Asus u5 baterai,
    http://www.batteryfast.co.uk/compaq/nw8000.htm Compaq nw8000 baterai,
    http://www.batteryfast.co.uk/compaq/nc8000.htm Compaq nc8000 baterai,
    http://www.batteryfast.co.uk/compaq/v1000.htm Compaq v1000 baterai,
    http://www.batteryfast.co.uk/compaq/nc6000.htm Compaq nc6000 baterai,
    http://www.batteryfast.co.uk/compaq/nx5000.htm Compaq nx5000 baterai,
    http://www.batteryfast.co.uk/compaq/n600.htm Compaq n600 baterai,
    http://www.batteryfast.co.uk/compaq/n600c.htm Compaq n600c baterai,
    http://www.batteryfast.co.uk/compaq/n610c.htm Compaq n610c baterai,
    http://www.batteryfast.co.uk/compaq/n610v.htm Compaq n610v baterai,
    http://www.batteryfast.co.uk/compaq/n620c.htm Compaq n620c baterai,
    http://www.batteryfast.co.uk/compaq/e500.htm Compaq e500 baterai,
    http://www.batteryfast.co.uk/compaq/e500s.htm Compaq e500s baterai,
    http://www.batteryfast.co.uk/compaq/v300.htm Compaq v300 baterai,
    http://www.batteryfast.co.uk/compaq/v500.htm Compaq v500 baterai,
    http://www.batteryfast.co.uk/compaq/pp2060.htm Compaq pp2060 baterai,
    http://www.batteryfast.co.uk/compaq/nx9000.htm Compaq nx9000 baterai,
    http://www.batteryfast.co.uk/compaq/nx9005.htm Compaq nx9005 baterai,
    http://www.batteryfast.co.uk/compaq/nx9010.htm Compaq nx9010 baterai,
    http://www.batteryfast.co.uk/compaq/nx9020.htm Compaq nx9020 baterai,
    http://www.batteryfast.co.uk/compaq/n110.htm Compaq n110 baterai,
    http://www.batteryfast.co.uk/compaq/n110s.htm Compaq n110s baterai,
    http://www.batteryfast.co.uk/compaq/pp2101x.htm Compaq pp2101x baterai,
    http://www.batteryfast.co.uk/compaq/presario-2100.htm Compaq presario 2100 baterai,
    http://www.batteryfast.co.uk/compaq/ze4000.htm Compaq ze4000 baterai,
    http://www.batteryfast.co.uk/compaq/f4809a.htm Compaq f4809a baterai,
    http://www.batteryfast.co.uk/compaq/f4812a.htm Compaq f4812a baterai,
    http://www.batteryfast.co.uk/dell/inspiron-700m.htm Dell inspiron 700m baterai,
    http://www.batteryfast.co.uk/dell/inspiron-710m.htm Dell inspiron 710m baterai,
    http://www.batteryfast.co.uk/dell/latitude-x200.htm Dell latitude x 200 baterai,
    http://www.batteryfast.co.uk/dell/8u443.htm Dell 8u443 baterai,
    http://www.batteryfast.co.uk/dell/312-0058.htm Dell 312-0058 baterai,

    Balasan

Tinggalkan balasan

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai *