Tanpa henti bersarang <div> Tag dan jQuery

Ini tampaknya seperti eksentrik topik, I 'm not sure it's benar-benar worth blogging tentang, tapi itu tidak pernah berhenti saya sebelumnya, Jadi di sini kita pergi Tersenyum

Saya bekerja pada sebuah proyek di mana aku menarik beberapa data dari pencarian, Kemasan ini ke pesan XML dan kemudian XML yang pada akhirnya berubah menjadi HTML melalui XSLT.  Ada banyak jQuery yang terlibat, salah satu dari sedikit yang mengimplementasikan beberapa fungsi tabbing.  Bila Anda klik pada tab (Benarkah, a <div>), jQuery memanggil .hide() dan .show() pada berbagai divs (beban awal halaman download semua konten jadi tidak ada postbacks dalam hal ini).

Sekelompok menit yang lalu, tab beralih logika mulai bersikap tak menentu dan itu tidak menunjukkan salah satu tab saya.  Saya akhirnya dilacak ke kenyataan bahwa internet explorer (setidaknya) berpikir bahwa <div> Tag bersarang jauh, jauh lebih dalam daripada yang dimaksudkan.Toolbar pengembang akan menunjukkan:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <-akhirnya menunjukkan itu ditutup sepanjang jalan di sini!

Jadi, Jika saya melakukan $("#Tab1Content").Sembunyikan(), Saya juga akan menyembunyikan Tab2 dan aku tidak pernah bisa menunjukkan Tab2 jika aku juga tidak menunjukkan Tab1.  Aku disalin dan disisipkan kode ke visual studio dan menunjukkan semua lapisan div up manis, sama seperti mereka seharusnya melakukan, tampak seperti ini:

-<div id = "Tab1Content">
  +<div>
  +<div>
-<div id = "Tab2Content">
  +<div>
  +<div>

Aku mengalahkan kepalaku ke dinding untuk sementara dan melihat bahwa dalam HTML sebenarnya kode ini menghasilkan banyak kosong <div> Tags, seperti:

<bodyHTMLan >>< kuat > pesan yang kuat.</strong> </body> </html> ">

  <div id = "Tab1Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

  <div id = "Tab2Content">

    <div id = "row1" />
    <div id = "row2" />

  </div>

</bodyHTMLan >>< kuat > pesan yang kuat.</strong> </body> </html> ">

(Di atas adalah waaaaaaaaaaaay yang disederhanakan.  Tag div kosong benar-benar berlaku. Beberapa saya <div> Tag yang penuh dengan konten, tetapi banyak lagi tidak.  Saya datang ke realisasi bahwa saya <Extensible Stylesheet Language:untuk setiap> arahan yang memancarkan bentuk pendek div tag ketika xsl:tidak untuk setiap ' menemukan data.  Aku memaksa komentar HTML ke output, seperti yang ditunjukkan:

image

 

Setelah saya melakukan itu, Semua div berbaris dengan baik dan tab beralih mulai bekerja.

Seperti biasa, Saya harap ini membantu seseorang dalam keadaan darurat.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Perbaikan cepat: "Nama tipe konten '$ Resources:ReportServerResources … tidak boleh berisi … karakter khusus”

Aku telah menghabiskan waktu membersihkan SharePoint 2010 situs dan salah satu pembersihan isu-isu yang berhubungan dengan korup / salah dipasang layanan SQL Server laporan masalah.  Masalah muncul ketika salah satu kolega saya mencoba untuk menyimpan situs sebagai template dan kemudian membuat membuat situs baru berdasarkan template itu.  Simpan operasi bekerja dengan baik, tetapi ketika ia berusaha untuk membuat situs baru, SharePoint ditampilkan pesan galat berikut:

Kesalahan

Nama jenis konten ' $Resources:ReportServerResources,DataSourceContentTypeName;' tidak boleh berisi: \ / : * ? “ # % < > { } | ~ & , dua periode berturut-turut (..), atau karakter khusus seperti tab.

Di sini adalah topi layar:

 

image

Saya telah melihat jenis konten di situs dan menemukan ini:

image

Jenis konten tersebut tidak jelas sehat.

Masalah ini tampaknya datang banyak di the Internets dan tidak tampaknya ada konsensus tunggal mengenai bagaimana mengatasinya.  Saya menemukan meja yang berguna yang dipetakan nama jenis konten yang buruk dengan nama-nama jenis konten yang baik di sini: http://social.technet.microsoft.com/Forums/en-ZA/sharepoint2010programming/thread/cb03e866-8184-4943-acfe-cafffa1b8b7a.  Aku secara manual memperbarui mereka thusly:

image

(BrightStarr dalam nama adalah jelas opsional, tapi tidak ada salahnya Tersenyum )

Hal ini memungkinkan saya untuk membuat template baru dan tidak melanggar apapun di situs lain, termasuk beberapa hal PerformancePoint Server yang sama sekali berbeda sekelompok orang bekerja pada.  Kemudian saya mampu untuk membuat situs baru pada template.  Sukses!

Saya tidak yakin ini adalah 100% solusi, Tapi itu membuat saya dan semua orang yang terlibat melewati ini menjengkelkan kesalahan.  Jika saya menemukan sesuatu yang baru, Saya akan posting update.  Saya gugup berasal dari fakta bahwa nama-nama ini tidak boleh salah di tempat pertama dan dengan memperbaiki nama tampilan, Saya tidak menyentuh nama internal. 

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Satu penyebab untuk "pencipta kesalahan ini tidak menyebutkan alasan.”

Saya telah melakukan banyak pekerjaan dengan SharePoint pencarian akhir-akhir ini dan secara khusus kelas KeywordQuery, properti dan metode.

Jika Anda menginginkan hasil yang ditetapkan untuk mengembalikan hasil atas dan di luar tersangka (Lihat di sini), Anda menambahkannya ke koleksi SelectedProperties, seperti dalam:

myKeywordQuery.SelectProperties.Add("xyzzy");

Banyak terima kasih dan ujung topi ke Corey Roth dan posting sangat berguna blog ini (http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/19/how-to-use-the-moss-enterprise-search-keywordquery-class.aspx)

Dalam kasus saya, "xyzzy" tidak benar-benar sebuah properti yang dikelola.  Ketika saya menambahkan ke SelectedProperties tetap, SharePoint melemparkan salah satu favorit saya pernah runtime pengecualian:

"Pencipta kesalahan ini tidak menentukan alasan."

Saya terutama seperti ibukota "R" alasan.  Ini kedengarannya saya seperti .NET setara dengan"Saya memiliki mulut tidak, dan aku harus scream.”

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Referensi yang berguna: Default hasil dari pencarian KeywordQuery

Ketika Anda memanggil Execute() metode pada KeywordQuery, Anda dapat membuat ResultTable berdasarkan ResultType.RelevantResults.  Potongan kode ini menggambarkan apa yang saya maksud:

ResultTableCollection resultsTableCollection = myKeywordQuery.Execute();

ResultTable searchResultsTable = resultsTableCollection[ResultType.RelevantResults];

Tabel yang dihasilkan akan memiliki kolom berikut informasi: 

WorkId
Peringkat
Judul
Penulis
Ukuran
Jalan
Deskripsi
Menulis
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL
ServerRedirectedURL

Aku berasal daftar ini dari SharePoint 2010 lingkungan, edisi Enterprise.  Mudah-mudahan itu akan berguna untuk seseorang di masa depan.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Salah satu alasan: "Gagal untuk mengekstrak berkas cab dalam larutan”

Ketika bekerja pada visual studio web bagian proyek hari ini, Aku kecil re-org beberapa file untuk dimasukkan ke dalam _layouts folder sebagai bagian dari proses deployment. Khusus, Diganti menjadi .js file dari "TypeAhead.js" untuk "TypeAhead(lama).js"  Saya berencana untuk menghapusnya segera setelah pendahulunya "TypeAhead.js" membuktikan benar.  Itu tampak seperti ini:

image

Hal ini segera menyebabkan masalah dengan visual studio ketika saya mencoba untuk menyebarkan proyek:

Terjadi kesalahan dalam langkah penyebaran 'Menambahkan solusi': Gagal untuk mengekstrak berkas cab dalam larutan.

Ternyata bahwa Anda tidak harus meletakkan tanda kurung dalam nama file.  Aku melepaskan parens dan yang memecahkan masalah.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Namun lebih jQuery–Mengubah ukuran gambar contoh

Saya mewarisi bagian web dari klien vendor tua dan memiliki masalah ukuran gambar.  Gambar harus 60×50 tapi untuk beberapa alasan aneh, vendor asli memaksa mereka ke dalam 42×42, begitu mereka melihat tergencet:

 

Baik gambar

Citra buruk

Berikut adalah markup (agak sederhana):

<Tabel kelas = 'diperpanjang-outlook'>
  <thead>
    <TR>
      <th  lebar ='100′>3 Selasa</th>
    </TR>
  </thead>

  <tbody>
    <kelas TR = 'ramalan'>
      <lebar TD ='100′>
        <UL>
          <Li kelas = 'tinggi'>Tinggi: 72&deg;F</Li>
          <Li kelas = 'rendah'>Rendah: 44&deg;F</Li>
          <Li kelas = 'kondisi'>Cerah
            <img src =’
http://deskwx.weatherbug.com/images/Forecast/icons/localized/60×50/en/Trans/cond007.png’ lebar ='42’ tinggi ='42’ Alt =” />
          </Li>
        </UL>
      </TD>
    </TR>

  </tbody>

</Meja>

Anda akan perhatikan bahwa meskipun path ke gambar sendiri menunjukkan dimensi yang tepat (60×50) vendor asli memaksa dalam 42×42.  Mengapa?  Gila.

Pokoknya, Saya menginginkan solusi cepat dan mudah untuk masalah ini dan aku berpaling untuk jQuery.  Triknya adalah untuk menemukan semua yang sesuai <img> Tag.  Aku tidak ingin Bergelandangan dengan tag img lain (yang ada banyak).  Ini sedikit jQuery melakukan trick:

<jenis script = text/javascript"" src ="http://Ajax.googleapis.com/Ajax/libs/jQuery/1.5/jQuery.min.js"></script>

<script type = "text/javascript">
     $(dokumen).siap(fungsi () {

         $(' li.condition > img').masing-masing(fungsi (Indeks, item)
           
{
             $(item).CSS("lebar", "60"); 
             $(item).CSS("tinggi", "50");
            });
     }); // pada beban dokumen
</script>

Sedikit kode menemukan koleksi <Li> Tag kelas yang adalah "kondisi" dan <img> anak-anak.  Ini kemudian iterates melalui semua itu.  Bekerja seperti pesona.

Aku mungkin bisa merampingkan, tapi aku tidak pernah tipe orang unix yang dipecahkan π untuk 18 digit presisi menggunakan sed dan awk dan aku tidak seperti itu jika jQuery pria baik Tersenyum.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Parsing XML dengan LINQ

Berikut adalah contoh cepat menggunakan LINQ untuk mengurai beberapa  XML dan dapatkan di manis, manis atribut di dalamnya.

Di sini adalah saya ingin parse XML:

<?Versi XML = "1.0" pengkodean = "utf-8" ?>
<DeafultConfigurationSets>
  <PageLayouts>

    <PageLayout nama = "xyzzy">
      <Tab>
        <Tab TabOrder = "1" TabLabel = "x" SharePointContentType = "_FITTED" AdditionalConstraints = "ac1" />
        <Tab TabOrder = "2" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
      </Tab>
    </PageLayout>

    <PageLayout nama = "xyzzy2">
      <Tab>
        <Tab TabOrder = "100" TabLabel = "x" SharePointContentType = "_FITTED" AdditionalConstraints = "ac1" />
        <Tab TabOrder = "101" TabLabel = "y" SharePointContentType = "b" AdditionalConstraints = "ac2" />
        <Tab TabOrder = "103" TabLabel = "z" SharePointContentType = "c" AdditionalConstraints = "ac3" />
      </Tab>
    </PageLayout>

  </PageLayouts>
</DeafultConfigurationSets>

Saya ingin membangun beberapa tab pada saat runtime oleh parsing di atas.  Tab saya tergantung pada tata letak halaman.  Jika nama layout halaman saya adalah "xyzzy2" maka saya ingin mendapatkan tab 100, 101 dan 103 (pada tab dalam <PageLayout nama = "xyzzy2">).

Berikut adalah LINQ yang melakukan itu:

var allTabs =
              dari p dalam
                  XElement.Parse(theXmlToParse).
                 
Elemen("PageLayouts").
                  Elemen("PageLayout")
              mana (p.Attribute("nama").Value.Equals("xyzzy2"))
              dari m p.Elements("Tab").Elemen("Tab")
              Pilih m;

          Results.Text = string.Kosong;

          foreach (var aTab di allTabs)
          {
              = Results.Text
                  "Tab ketertiban: " + aTab.Attribute("TabOrder").Nilai + " |" +
                  "Tab Label: " + aTab.Attribute("TabLabel").Nilai + " | " +
                  "SharePointContentType: " + aTab.Attribute("SharePointContentType").Nilai + " | " +
                  "AdditionalConstraints: " + aTab.Attribute("AdditionalConstraints").Nilai + "r";
          }

Di atas, variabel "theXmlToParse" adalah sebuah string variabel, Namun Anda dapat menggunakan beban() metode pada Sungai jika Anda seperti.

"Hasil" adalah label dalam formulir web dan ketika mengeksekusi kode ini, tampak seperti ini:

SNAGHTML11cd2e7c

Aku belum bekerja keluar bagaimana untuk mengurutkan hasil belum, Jadi aku akan meninggalkan itu untuk posting blog masa depan.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery dan pengguna anonim

Aku diaktifkan akses anonim di situs saya untuk menguji keluar bagian web pencarian yang saya telah mengembangkan dan tidak ada kejutan besar, itu tidak cukup berhasil.  Akses anonim adalah pretty much selalu sebuah tantangan bagi saya.

Dalam hal ini, pencarian awal tidak berjalan untuk beberapa alasan.  Saya harus mengatakan itu adalah berjalan tetapi tidak kembali hasil apapun.  Saya menggunakan KeywordQuery untuk tampilan awal.

Saya melakukan pencarian cepat dan posting blog ini oleh"sowmyancs"datang cukup cepat: “SharePoint 2010 Pencarian: tidak menampilkan setiap hasil untuk pengguna anonim?”  Bahwa blog entry menjelaskan masalah dari keluar dari perspektif pencarian kata kunci kotak tapi perilaku yang sama dengan saya-itu bekerja untuk dikonfirmasi pengguna dan untuk pengguna anonim, tapi pengguna anonim tidak ada hasil. 

Aku mengikuti petunjuk dan bang!  Memecahkan masalah saya.  Saya tidak yakin apa ini akan memiliki efek samping dan mereka mungkin membuktikan menjadi masalah, tetapi hasil jangka pendek membantu.

Mengklik melalui blog:

image

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

SharePoint 2010 KeywordQuery dan properti HiddenConstraints

Saya telah melakukan sedikit pekerjaan dengan KeywordQuery objek dalam SharePoint 2010 dan memanfaatkan HiddenConstraints properti.

Saya tidak menemukan informasi yang berguna segera bahwa properti, Jadi saya pikir saya akan cepat menuliskan bagaimana saya telah menggunakannya.

Sejauh yang saya dapat memberitahu, ini adalah kendala otomatis ditambahkan ke pertanyaan sehingga Anda dapat semacam taman itu ada dan tidak khawatir tentang hal itu.  Seperti, It's just another kata kunci (atau kumpulan kata kunci) dan pengubah yang Anda dapat mengetik dalam ke UI ketika Anda melakukan pencarian kata kunci.  Berikut adalah contoh:

keywordQuery.HiddenConstraints = "lingkup:\"Industry" ";

Anda dapat menambahkan tambahan kendala dengan pembatas ruang.

keywordQuery.HiddenConstraints = "lingkup:\"Industry" Pertahanan";

Di atas mengatakan dalam bahasa Inggris, "menjalankan query kata kunci mencari"Pertahanan"dan selanjutnya, menggunakan lingkup "Industri".

Berikut adalah cara lain untuk melihat itu:

image

Saya telah menggunakannya untuk menyediakan cakupan otomatis bergantung pada konteks pada bagian web kustom.  Ketika pengguna mengklik tab dan klik tombol Cari, tab menentukan cakupan pencarian tertentu.  Itu adalah bekerja baik sejauh.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Contoh: XSLT menciptakan HTML Href

Saya telah melakukan sedikit barang XSL akhir-akhir ini dan berpikir saya akan mengumpulkan sampel untuk referensi di masa mendatang saya dan yang mungkin bernilai kepada kita semua XSLT-ers mencari nafkah di internets.

Mempertimbangkan XML berikut:

<FdcSearchTabsCollection Count = "2">
  <SearchTab Label = "industri" SortOrder = "00" Label = "Industri" SearchConstraints = "contenttype:Industri" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <SearchTab Label = "praktek" SortOrder = "01" Label = "Praktek" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Potongan XSL berikut akan menghasilkan daftar diurutkan hrefs tab:

<Extensible Stylesheet Language:template pertandingan = "FdcSearchTabsCollection" XML:ruang = "melestarikan">
   
    <!– "Semua" tab –>
    <a href = "javascript:ViewTab('Semua')">Lihat semua</a>
   
    <!– Setiap individu tab –>
    <!– Iterate melalui semua tab dan menampilkan yang benar  link. –>
    <Extensible Stylesheet Language:untuk setiap = pilih "SearchTab">
      <Extensible Stylesheet Language:semacam select="@SortOrder"/>

      …
      <a href = "javascript:ViewTab(‘{@ TabID}’)"><Extensible Stylesheet Language:nilai dari select="@Label"/></a>
    </Extensible Stylesheet Language:untuk setiap>

    <br /> 
   

   </Extensible Stylesheet Language:template>

Berikut adalah apa yang tampak seperti dalam SharePoint:

SNAGHTML78aa2cb

 

 

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin