Arsip Kategori: Pengembangan SharePoint

Penjelasan sederhana: “Nilai tidak jatuh dalam kisaran diharapkan.”

UPDATE: Poster anonim meninggalkan komentar besar tentang nama-nama internal. Pastikan untuk membaca.

Ketika bekerja dengan acara Penerima dan kode lain yang referensi daftar SharePoint item melalui object model, Saya sering melakukan kesalahan yang menghasilkan galat ini saat runtime:

Error loading dan menjalankan acara penerima Conchango.xyzzyEventReceiver di xyzzy, Versi = 1.0.0.0, Culture = neutral, PublicKeyToken = 0dc50a750396c3ac. Informasi tambahan adalah di bawah ini. : Nilai tidak jatuh dalam kisaran diharapkan.

Saya pikir ini adalah kesalahan yang cukup generik yang berpotensi disebabkan berbagai cara. Namun, salah satu penjelasan sederhana adalah bahwa aku 'm referensi bidang yang salah. Jika nama bidang "Tempo", Aku harus referensi seperti ini di acara receiver:

properti.ListItem["Tempo"]

Ketika saya misspell atau menggunakan kasus salah ketika referensi bidang, SharePoint menghasilkan di atas disebutkan kesalahan runtime. Misalnya, ini salah:

properti.ListItem["tempo"]

</akhir>

Berlangganan ke blog saya.

Technorati Tags:

Cepat & Mudah: Membuat Folder dan menetapkan jenis konten (Atau, Memiliki Anda KPI dan memakannya terlalu)

Untuk bekerja di sekitar masalah KPI Saya menulis tentang di sini, Aku melakukan beberapa pengujian dan menemukan bahwa KPI kerja terhadap folder dengan meta data dengan cara yang sama bahwa mereka bekerja melawan dokumen atau daftar item. Aku membuktikan itu dengan menciptakan konten jenis baru berdasarkan jenis konten folder dan kemudian ditambahkan beberapa bidang. Saya membuat beberapa indikator dan terbukti sendiri bahwa KPI bekerja seperti yang diharapkan. Ini adalah berita hangat. Hal ini tidak sempurna, karena melacak Anda mendapatkan dari KPI terhadap folder adalah bukan apa yang Anda inginkan. Ini tidak terlalu banyak kelemahan dalam kasus saya karena 1) pengguna akhir tidak tahu lebih baik dan 2) melacak pergi ke folder. Mereka mengklik nama folder dan mereka di item. Ini adalah dua klik bukan satu, yang bukanlah akhir dari dunia.

Ini mengalir dengan baik dengan pekerjaan yang saya lakukan. Saya membuat folder untuk setiap dokumen yang akan diupload. Hal ini dilakukan melalui acara Penerima. Akibatnya, ini adalah sepotong kue untuk menjaga folder induk Meta data sinkron dengan KPI-driven meta data dari file itu sendiri karena pipa sudah di tempat. This allows me to have my KPI’s and eat them too 🙂

Aku diubah Penerima acara untuk menambahkan folder dan kemudian menetapkan jenis konten folder ini baru untuk tipe konten KPI ramah saya kustom. Ini sedikit kode melakukan trick:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Dokumen").Subfolder;
  SPFolder addedFolder = srcFolders.Add(properti.ListItem.ID.ToString());
  SPContentTypeId kpiCT = baru SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Konten jenis ID"] = kpiCT;
  addedFolder.Item.Update();

Untuk mencari ID tipe konten yang sebenarnya, Aku diakses jenis konten melalui pengaturan situs dan menyalin/disisipkan itu dari URL seperti yang ditunjukkan:

gambar

</akhir>

Berlangganan ke blog saya!

Technorati Tags: ,

Cepat dan mudah: Mendapatkan SPFolder objek SPListItem di acara penerima

Aku benci mengakuinya, tapi aku berjuang dengan yang satu ini semua hari. Saya Penerima acara perlu memperbarui bidang induk foldernya. Ini sedikit menunjukkan bagaimana melakukannya:

swasta Batal UpdateParentFolder(SPItemEventProperties properti)
{

SPFolder thisItemFolder = properti.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ persetujuan Status"] = "Kabar baik, semua orang!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

Dalam hal ini, Saya bekerja dengan perpustakaan dokumen dan sifat-sifat berasal dari peristiwa ItemAdded.

Kuncinya adalah bahwa Anda tidak bisa mendapatkan SPFolder item langsung dari item itu sendiri (yaitu. properti.ListItem.Folder nol). Sebaliknya, pergi ke item daftar File terkait dan mendapatkan folder tempat berkas.

</akhir>

Berlangganan ke blog saya!

Technorati Tags:

Namun lain acara penerima Debug trik

Aku yakin aku bukan orang pertama yang datang dengan ini. Namun, Saya tidak melihat siapa pun yang menerbitkan sebuah trik seperti ini sejak saya mulai menaruh perhatian masyarakat bulan Juli. Jadi, Saya pikir saya akan posting ini cepat dan mudah debug tip.

Aku sedang bekerja pada acara penerima yang mulai menghasilkan kesalahan ini di 12 sarang:

Error loading dan menjalankan acara penerima Conchango.xyzzyEventReceiver di xyzzy, Versi = 1.0.0.0, Culture = neutral, PublicKeyToken = blahbalhbalh. Informasi tambahan adalah di bawah ini. : Referensi objek yang tidak diatur ke contoh sebuah objek.

Aku tidak tahu di mana saya telah memperkenalkan bug ini karena saya telah melakukan hal-hal yang terlalu banyak dalam salah satu siklus kode/menyebarkan/tes saya.

Aku mencoba Solusi ini untuk mendapatkan pdb saya di sana dengan harapan bahwa SharePoint 12 Sarang akan menunjukkan setumpuk jejak, tetapi tidak beruntung. Aku tidak tahu jika mungkin dan jika seseorang melakukan, tolong beritahu saya 🙂

Aku tahu itu mungkin untuk menulis pesan log Anda sendiri untuk 12 sarang. Terus terang, Aku ingin sesuatu yang sedikit kurang menakutkan dan lebih cepat untuk melaksanakan.

Terpikir olehku bahwa saya setidaknya bisa mendapatkan beberapa informasi dasar jejak oleh penangkapan dan re-throwing pengecualian generik seperti ini:

  coba {
    UpdateEditionDate(properti);
  }
  menangkap (Pengecualian e)
  {
    melempar baru Pengecualian("Operator, UpdateEditionDate(): Pengecualian: [" + e.ToString() + "].");
  }

Ini muncul dalam 12 sarang thusly:

Error loading dan menjalankan acara penerima Conchango.xyzzyEventReceiver di xyzzy, Versi = 1.0.0.0, Culture = neutral, PublicKeyToken = blahblahblah. Informasi tambahan adalah di bawah ini. : Operator, UpdateEditionDate(): Pengecualian: [System.NullReferenceException: Referensi objek yang tidak diatur ke contoh sebuah objek. di Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties properti) di Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties properti, String eventDescription)].

Itu memberiku semua detail yang saya butuhkan untuk melacak masalah tertentu dan aku berharap untuk menggunakannya banyak maju.

</akhir>

Berlangganan ke blog saya!

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!

MOSS KPI bug? Daftar indikator terikat ke perpustakaan dokumen dengan folder

UPDATE 02/29/08: Aku memecahkan masalah ini dengan membuat folder dan kemudian menetapkan jenis konten untuk folder yang memiliki meta data yang saya butuhkan untuk KPI. Saya menjelaskan bahwa dalam sedikit lebih detail di sini.

Kami telah menerapkan solusi teknis yang mana pengguna upload dokumen ke pustaka dokumen. Acara Penerima menciptakan direktori dan bergerak file ke direktori tersebut (menggunakan teknik yang mirip dengan apa yang saya tulis tentang Sini). Kami telah berhasil navigasikan di sekitar potensi masalah yang disebabkan oleh Penerima peristiwa yang mengubah file upload (terutama karena pengguna tidak pernah mulai dokumen mereka dengan mengklik pada "New" Tapi bukannya menciptakan docs lokal dan kemudian meng-upload mereka).

Meta data untuk dokumen-dokumen ini mencakup ya/tidak ada situs kolom berjudul "mendesak" dan kolom situs lain yang disebut "Status". Kita perlu memenuhi persyaratan bisnis yang menunjukkan persentase "mendesak" dokumen yang statusnya "Tertunda".

Ini biasanya sederhana untuk melakukan dan aku menggambarkan sesuatu yang sangat mirip ini di SharePoint Beagle dengan banyak screen shot jika Anda tertarik.

In a nutshell, Saya melakukan hal berikut:

  • Membuat tampilan pada doc perpustakaan yang disebut "Tertunda".
  • Mengkonfigurasi tampilan untuk mengabaikan struktur folder.
  • Membuat daftar KPI.
  • Membuat indikator dalam daftar yang menunjuk ke doc lib dan bahwa "tertunda" Lihat.

Ini hanya tidak bekerja. KPI menunjukkan target saya (misalnya. lima dokumen mendesak) tapi selalu menunjukkan jumlah sebenarnya dokumen mendesak sebagai nol. Paradoksnya, Jika Anda Telusuri rincian, Hal ini menunjukkan lima dokumen mendesak dalam daftar. Saya membuat sebuah skenario yang sangat sederhana dengan dua dokumen, satu folder dan satu tidak. Berikut adalah screen shot:

gambar

Screenshot di atas dengan jelas menunjukkan bahwa ada dua dokumen dalam pandangan tetapi nilai"" salah satu. "CamlSchema" dengan dokumen kosong Id dalam folder akar dan bagian lainnya terletak di folder bernama "84".

Tampaknya kepada saya bahwa meskipun Anda menentukan tampilan, KPI tidak menghormati "Tampilkan semua item tanpa folder" pengaturan dan bukannya, confines sendiri untuk root folder.

Jika aku salah, Silakan drop me a line atau meninggalkan komentar.

</akhir>

Berlangganan ke blog saya!

Technorati Tags:

Solusi untuk masalah: “FileNotFoundException” Dengan Feature Receiver.

Saya bekerja pada sebuah fitur minggu yang akan menambah Penerima acara beberapa contoh daftar khusus. (Aku blogged sedikit tentang bahwa daftar penerima di sini).

Menggunakan baris perintah, Aku bisa menginstal fitur dengan tidak ada kesalahan (Tapi lihat di bawah untuk kesalahan tersembunyi). Ketika saya mencoba untuk menggunakan fitur di situs, MOSS mengeluh "FileNotFoundException" kesalahan. Blog entry ini menjelaskan bagaimana saya memecahkan itu.

Ini adalah kesalahan yang MOSS menunjukkan di peramban web:

Fitur ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ tidak dapat diinstal karena pemuatan acara penerima perakitan "xyzzyFeatureReceiver_0" gagal: System.IO.FileNotFoundException: Tidak dapat memuat file atau perakitan ' xyzzyFeatureReceiver_0’ atau salah satu dari dependensi. Sistem tidak dapat menemukan file yang ditentukan.
Nama file: ' xyzzyFeatureReceiver_0’
di System.Reflection.Assembly.nLoad(Nama file AssemblyName, String basis kode, Bukti assemblySecurity, LocationHint Majelis, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
di System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Bukti assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
di System.Reflection.Assembly.InternalLoad(String assemblyString, Bukti assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
di System.Reflection.Assembly.Load(String assemblyString)
di Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN DIMULAI: Majelis mengikat pendataan diaktifkan OFF.
Mengaktifkan pengelogan kegagalan mengikat Majelis, menetapkan nilai registri [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) untuk 1.
Catatan: Ada beberapa kinerja penalti yang terkait dengan Majelis mengikat kegagalan penebangan.
Untuk mematikan fitur ini, menghapus nilai registry [HKLMSoftwareMicrosoftFusion!EnableLog].

Memecahkan masalah dengan Windows SharePoint Services.

Aku tahu bagaimana untuk sengaja menyebabkan kesalahan itu: Jangan Instal Majelis dalam GAC. Tapi, itu dalam GAC. Saya biasanya menginstal Majelis ke GAC dengan menyeretnya ke c:\windowsassembly folder menggunakan windows explorer. Aku belum pernah merasakan 100% nyaman melakukannya karena saya selalu berpikir bahwa gacutil ada karena suatu alasan … Jadi aku mencoba yang. Tidak ada bedanya.

Aku mencari Internets dan menemukan posting ini: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Poster yang terjadi menggunakan sedikit akar sama kode (dari buku dalam WSS dari daftar ini) Jadi itu tanda harapan. Namun, saran dari dekorasi perakitan dengan [Majelis: ] direktif tidak masuk akal bagi saya. Aku mencoba tetap dan aku benar. Tidak ada bedanya.

Lalu aku menyadari bahwa definisi kelas saya itu tidak umum. Aku berhasil publik dan yang membuat tidak ada perbedaan.

Berikutnya, Aku pergi ke kesulitan memungkinkan "Majelis mengikat kegagalan log" (mengikuti petunjuk berguna dan akurat disediakan) dan ini adalah tempat hal-hal mulai mendapatkan menarik. Log yang menunjukkan bahwa runtime sedang mencari di mana-mana pada server untuk perakitan saya. Itu bahkan tampaknya akan mencari di lemari obat saya. Tapi … itu tidak akan mencarinya di GAC.

Aku mengenakan jaket musim dingin dan pergi mencari Internets lagi dan menemukan bahwa seseorang memiliki masalah ini juga. Diskusi panjang di yang posting peters off menjadi apa-apa dan I cant menemukan solusi.

Aku pindah perakitan saya ke salah satu tempat log klaim itu sedang mencari dan aku membuat kemajuan yang lebih sedikit. Aku dihargai dengan kesalahan baru di peramban ketika saya mencoba untuk mengaktifkan fitur:

Gagal membuat objek penerima fitur dari Majelis "xyzzyFeatureReceiver_0", jenis "Conchango.xyzzyFeatureReceiver" untuk fitur b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Nilai tidak boleh null.
Nama parameter: jenis
di System.Activator.CreateInstance(Tipe tipe, Non-publik Boolean)
di System.Activator.CreateInstance(Tipe tipe)
di Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Memecahkan masalah dengan Windows SharePoint Services.

Waktu untuk satu perjalanan terakhir ke Internets!

Kali ini saya menemukan, cukup diduga, MOSS bahwa isu kesalahan ini karena Majelis tidak dalam GAC.

Saya ingin mendapatkan sesuatu yang positif dari ini dan mencoba untuk merasa sedikit bangga bahwa saya telah membuat Pelarian dari menjalankan Majelis, Tapi itu tidak bekerja. Aku hanya plain kesal. Aku mendapati diriku bergumam "ayam atau telur" di bawah napas.

Saya akhirnya memutuskan untuk menyepak bola. Saya membuat sebuah proyek yang sama sekali baru dan copy/paste kode dari proyek tidak bekerja incredible-cloaked-from-the-GAC-assembly atas untuk proyek baru ini. (Saya mencari sebuah bendera membangun yang disebut sesuatu seperti "Sembunyikan dari Majelis mengikat jika dipasang di GAC" tapi tidak bisa menemukan satu).

Menginstal fitur dan mengaktifkannya dan … kerjanya! Jadi, setelah semua itu, Aku pada dasarnya ' reboot’ proyek saya. Ini adalah alasan lain mengapa aku benci komputer.

Aku belajar sesuatu yang bermanfaat dari ini. Saya telah menginstal fitur menggunakan baris perintah stsadm sepanjang hari dan telah menggunakan "-memaksa" Opsi keluar dari kebiasaan. Untuk beberapa alasan, Saya tidak menggunakan opsi Angkatan-ketika saya menginstal proyek baru. Saat ini, Aku benar-benar, benar-benar lupa untuk menyalin perakitan proyek baru ini ke dalam GAC. Akibatnya, Saya menerima bahwa "FielNotFoundException" kesalahan. Saat ini, Aku mendapatkannya dari stsadm, tidak ketika saya mencoba untuk mengaktifkan fitur melalui web browser. Jadi, -kekuatan benar-benar memainkan dua peran. Hal ini memungkinkan Anda untuk menginstal ulang sebuah fitur yang ada. Hal ini juga memungkinkan Anda untuk menginstal fitur kereta yang tidak bekerja pada saat runtime dengan menekan kesalahan. Mungkin dikatakan sebagai banyak bantuan di suatu tempat, tetapi aku tidak pernah melihatnya.

</akhir>

Technorati Tags: ,

Cepat & Mudah: Mengubah nama File Upload menggunakan obyek SharePoint Model melalui acara penerima

UPDATE: Ini bekerja tetapi ada keterbatasan yang signifikan yang dijelaskan dalam komentar. Ini masih mungkin berguna dalam beberapa cirumstances.

UPDATE 2: Dalam proyek saya saat ini, pengguna selalu meng-upload dokumen. Akibatnya, Aku tidak lari ke masalah mana MS Word berjalan dan berpikir bahwa file yang diubah namanya di atasnya. Aku lari ke masalah, "file yang diubah oleh orang lain" dan memecahkan ini melalui sederhana Semafor jenis bendera. Pengguna harus mengubah meta data lapangan dari nilai default untuk sesuatu yang lain. Itemupdated() Penerima mencari nilai yang valid yang ada sebelum benar-benar melakukan rename dan sejak itu, Saya tidak punya masalah. Anda mungkin berbeda.

Saya punya klien persyaratan untuk mengubah nama file upload ke pustaka dokumen tertentu agar sesuai dengan konvensi penamaan tertentu. API tidak memberikan nama"()" metode. Sebaliknya, Kami menggunakan "MoveTo(…)". Berikut adalah sedikit sedikit kode untuk mencapai hal ini:

 Umum override Batal ItemAdded(SPItemEventProperties properti)
        {
            SPFile f = properti.ListItem.File;

            f.MoveTo(properti.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

Bit hanya rumit adalah "sifat. ListItem.ParentList.RootFolder.Url". MoveTo() metode ini mengharuskan URL. Yang dihaluskan string poin saya ke root folder dari dokumen perpustakaan saya saat ini. Hal ini memungkinkan saya untuk menghindari coding apapun keras dalam acara saya Penerima.

Ini adalah versi lebih berguna yang melakukan hal yang sama, tetapi menetapkan nama file "Judul":

 Umum override Batal ItemAdded(SPItemEventProperties properti)
        {
            DisableEventFiring();

            // Menetapkan judul item ini untuk nama file itu sendiri.
 // CATATAN: Tugas ini harus dilakukan sebelum kita memodifikasi file itu sendiri.
 // Memanggil update() pada SPFile tampaknya membatalkan pada properti di
 // beberapa pengertian.  Pembaruan "judul" gagal sampai yang mengubah (dan update() panggilan)
 // dipindahkan di depan perubahan nama file.
            properti.ListItem["Judul"] = properti.ListItem.File.Name;

            properti.ListItem.Update();

            SPFile f = properti.ListItem.File;

            // Dapatkan ekstensi file.  Kita perlu yang kemudian.
 string spfileExt = baru FileInfo(f.Name).Ekstensi;

            // Mengubah nama file ke daftar item ID dan menggunakan ekstensi file untuk menjaga
 // Bagian itu utuh.
            f.MoveTo(properti.ListItem.ParentList.RootFolder.Url +
                "/" + properti.ListItem["ID"] + spfileExt);

            // Melakukan langkah.
            f.Update();

            EnableEventFiring();
        }

Quick Tip: Konten permintaan Web bagian, Lookup kolom nilai dan XSL

Aku punya nama kolom dalam tipe konten yang bernama "Real estat lokasi".

Kolom adalah jenis "pencarian".

Saya telah memodifikasi <CommonViewFields> dan ItemStyle.xsl untuk menunjukkan kolom.

Sederhana <Extensible Stylesheet Language:nilai-pilih =…> mengembalikan kembali nilai internal yang mencakup posisi urutan data, seperti:

1;#Miami

Untuk mendapatkan nilai ramah manusia, menggunakan xsl substring-setelah, seperti yang ditunjukkan:

<Extensible Stylesheet Language:valuExtensible Stylesheet Languagef pilih = "substring-setelah(@ Real_x005F_x0020_Estate_x005F_x0020_Location,’#’)"></Extensible Stylesheet Language:nilai dari>

Menggunakan teknik ini setiap kali Anda bekerja dengan nilai-nilai pencarian dalam XSL berubah dan perlu untuk mendapatkan nilai manusia-friendly.

<akhir />

Technorati Tags: , ,

Cepat dan mudah: Menentukan nama kolom Internal kolom situs

UPDATE: Jeremy Thake telah blogged tentang hal ini dan memasang beberapa kode untuk aplikasi konsol yang menunjukkan nama-nama internal.

Aku sedang berusaha untuk mendapatkan bagian web konten permintaan untuk menampilkan tanggal jatuh tempo dari tugas dan karena label layar "Tempo", Saya berasumsi bahwa nama kolom untuk digunakan dalam <CommonViewFields> adalah "Due_x0020_Date".

Salah!

Nama kolom yang nyata dalam hal ini adalah "Perlu".

Bagaimana saya menemukannya? Saya membaca kembali Heather Salomo blog entry pada memodifikasi CQWP untuk menunjukkan kolom tambahan data. Dia menggambarkan proses ini di langkah #13. Kepercayaan itu. Benar. Setidaknya, itu adalah benar bagi saya. Aku tidak percaya itu pada awalnya untuk kolom lain dengan banyak nama lagi.

Saya katakan "kepercayaan itu" karena saya tidak percaya itu dan mungkin sia-sia di dekat dua jam menyeruduk kepalaku menempel dinding. Setelah saya menyelesaikan "perlu" Nama, Saya ingin menambahkan bidang lain untuk <CommonViewFields>. Menggunakan teknik Salomo, Saya mendapatkan sebuah kolom dengan nama seperti "XYZ_x0020_Project_x0020_Due_x00".

Saya berpikir sendiri, itu adalah jelas sebuah nama yang terpotong. Aku pergi ke depan dan un terpotong dengan tidak sukses. Saya akhirnya menggunakan nama tampaknya terpotong dan bekerja.

Bonus tip: Ketika saya bekerja dengan CQWP, Jika saya menambahkan nama internal yang buruk untuk <CommonViewFields>, CQWP akan memberitahu saya bahwa permintaan telah kembali tidak ada hasil. Tapi, Jika saya menambahkan tipe data ke nama field, itu akan kembali hasil. Menambahkan data jenis sebenarnya bertopeng masalah karena saya adalah referensi tidak ada bidang. Aku bisa menambahkannya, tetapi ketika saya mencoba untuk menampilkan nilai, Aku akan selalu mendapatkan kosong.

Hal ini tidak menutupi kesalahan:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

Ini menurut menutupi kesalahan:

<CommonViewFields>Due_x0020_Date,DateTime;</CommonViewfields>

</akhir>