カテゴリーアーカイブ: jQuery と SharePoint

SharePoint クイック起動の相対 Url で厄介な問題を克服します。

サイド リンク バー ナビゲーション、他の日へのリンクを追加したいし、私に言った SharePoint:

image

純粋なテキストのバージョンがあります。:

URL が有効で、有効な文字のいずれかで始まることを確認します (番号記号 (#) またはフォワード スラッシュ (/)) または、有効なプロトコルのサポート (たとえば, ' http://’, ' https://’, ' ファイル://’, ' ftp://’, ' mailto:’, ' ニュース:’).

"オエッと pox!"私は言った.

Java スクリプトの設定を使用してクイック起動で知られているリンクを見つけるし、その動作をオーバーライドするこの回避策は.

これをテストするには, thusly、テスト サイトに新しいリンクを追加します。:

image

JQuery を使用されます。. それを解決するには, いくつかの JavaScript と jQuery のお好きな技法を使用してページ上に、このようなコードの行を取得します。:

 

$(ドキュメント).準備ができて( 関数 () {

    $("は:含まれています(' URL 置換をテスト ')").クリック(関数 () { アラート("変更されたクリック動作!"); 戻り値 false;});

});

ボブのあなたの叔父さんと.

JQuery セレクターを検索すべて <は> 「テスト URL 置換」は、その名前タグ. 検索を調整することによってあなたのリンクとこのようなします可能性があります。.

] をクリックして(関数() ユーザーがクリックしたときに、SharePoint が行っている何よりも優先されます。. 「False を返す」または他のそれはあなたのものを行うしようとして href こともを確認してください。, これはほぼ確実にあなたの目標.

これは、SharePoint のオンライン環境でテストする必要がありますがうまく動作 2010 以前のバージョンでも.

</終了>

undefined私のブログを購読します。.

私は Twitter の上に従ってください。 http://www.twitter.com/pagalvin

迅速かつ簡単な: 「無効な URL パラメーターを解決します。” lists.asmx で UpdateListItems の問題

Lists.asmx を介して UpdateListItems を使用する場合, それは、エラーを生成する簡単です。:

無効な URL パラメーター.

指定された URL が無効なコマンドまたは値が含まれています. URL をもう一度確認してください。.

ID を忘れた場合は、このエラーを得ることができる、更新するフィールドの一覧です。  これは、, 多くの SP これらの web サービスのような, ID 属性には ID を含める必要があるので少し直感に反するが、 <メソッド> 要素。  あなたがいないと ID を更新し、たくないおそらく最初の場所で.

この SOAP エンベロープを動作します。:

<soapenv:封筒 xmlns:soapenv =' http://schemas.xmlsoap.org/soap/envelope/'>
  <soapenv:体>                      
    <UpdateListItems xmlns =' http://schemas.microsoft.com/sharepoint/soap/'>                     
      <姓>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</姓>                     
        <更新プログラム>                     
         <OnError バッチ =「続ける」">
          <メソッド ID ="1" Cmd ="更新">
            <フィールド名 ="CooperativeLock">ロックされています。!</フィールド>
            <フィールド名 =「ID">1</フィールド>
          </メソッド>
        </バッチ>                     
        </更新プログラム>                
      </UpdateListItems>             
  </soapenv:体>         
</soapenv:封筒>

ID フィールドの参照を取り除く場合は迷惑な「無効な URL パラメーター」メッセージを得るでしょう.

</終了>

undefined私のブログを購読します。.

私は Twitter の上に従ってください。 http://www.twitter.com/pagalvin

 

JavaScript で貧乏人をキャッシュします。

[TL;DR のバージョン: 非同期呼び出しの結果を格納するクッキーを使用します。; 過去の非同期呼び出しの結果を直ちに表示し、ページの読み込み後にそれらを検証します。]

私は取り組んできたイントラネットの SharePoint サイト、クライアントの機能, 他のものの間で, 様式化された 2 番目のナビゲーション メニュー オプションは、正規の古いカスタム リストを介して管理されます。  アイデアは、クライアントに影響を与えるまたはそれが出すグローバル ナビゲーションによって影響されることがなく「自分」のサイトのメニューを制御するを取得します。.

(別のポストには根本的にサイトの挙動についてのほぼすべてを変更するいくつかの CSS と js ファイルを読み込みます HTML ファイルを指す CEWP を追加する方法について信じられないほど破壊的な何かがあります。)

この非常に単純なコード:

咽頭痛スポットここでは、誰も 1 つのサイトのページをヒットするたびに, そのユーザーの web ブラウザーは、リストから項目を取得に達しています。  安定し、完全な開発が完了し、テストすることが証明されています, この呼び出しは必要以上 99% まれ、メニューから時間を変更します。  ハイパー ajaxy web サイトのこの勇敢な新しい世界で共通である奇妙な UI に影響しています – ページがレンダリングされ、だけにしては、メニューのレンダリングします。  神経質であり、私の見解で気が散る。  神経質. だから, キャッシュ。 

Thusly、ロジックを変更:

  • 最後に読んだようにメニューを含む、ブラウザーで cookie を探します
    • 場合が見つかりました, すぐにレンダリングされます。  ページの読み込みが完了するを待ってはいけない。  (あなたの HTML は、ここで戦略的に配置を確認する必要があります。, 行うは難しいではないです。).
  • ページの読み込みが完了し、残りの部分または lists.asmx または何を使用してリストからメニュー項目をロードするを呼び出す非同期に待機します。
  • 私はクッキーに対して得た比較します。
    • それと一致する場合, 停止
    • それ以外の場合, jQuery を使ってください。, 場合束を動的に読み込みます <李>では <ul>
  • すべての書式設定に CSS を使用します。
  • 利益!

あなたのいくつかと言うとしています。, "ねえ! とにかく、メニューを読んでいるのでここに実際キャッシュことはできません。 ひとつひとつの時間.”  あなたは正しい – を与えていないよ、サーバー任意区切りの種類。  しかし、HTML ペイロードを完全にレンダリングの呼び出し非同期は、ページの初期後に起こる, それは「感じ」より、ユーザーに対応します。  メニュー レンダリングはかなり限り、ページを描画します。  変更する場合は、メニュー, ユーザーがメニューの神経質な再描画を受ける, その 1 つの時間だけが.

このキャッシュをより効果的し、同時に、サーバーを手助けするいくつかの方法があります。:

  • 「Cookie のキャッシュ」は最小の有効な規則に含める 24 時間またはいくつか他の時間枠. 有効期限が切れた cookie がない限り、, クッキーのメニューのスナップショットを使用して、サーバーをヒットしません。.

それはすべて今気になることも. :). 

誰もがここの巧妙なアイデアを持っている場合私はそれらを知っているみたい.

そして最後に-この手法は他のもの使用ことができます。  このクライアントのページのさまざまなページにデータ駆動型のものの数, それらの多くは比較的稀に変更します。 (週に一度あるいは月に一度のような).  特定の機能領域を対象する場合, ローカル cookie ストアからコンテンツを引っ張ってくるとすぐにレンダリングして、応答性の高い UI を与えることができます。  ない任意のサイクル、サーバーを保存している場合でも、それユーザーに速く感じる。  あなた ことができます。 このローカル cookie のキャッシュを無効にするいくつかの条件とトリガーの決定によって、サーバ ・ サイクルを保存します。  それはすべての状況と芸術的なものと最も本当に楽しい :). 

</終了>

undefined私のブログを購読します。.

私は Twitter の上に従ってください。 http://www.twitter.com/pagalvin

XSLT と jQuery をサンプルします。

XSLT と jQuery と他の将来の役に立つことがありますいくつかのスニペットを共有するだろうと思ったの多くをしています。.

例 1: 簡単な JavaScript を出力します。 / XSLT で jQuery:

<xsl:テンプレート照合」何か =" xml:空間 ="preserve">

  <!– 空白クエリ フレンドリー フィルターの非表示フィールド –>
  <スクリプトの種類」テキスト/javascript」=>
    $(ドキュメント).準備ができて(関数(){
      $(「#QueryFriendlyFilters」).ヴァル(「空」);
    });
  </スクリプト>

</xsl:テンプレート>

ページの読み込みが完了するまで待機する JavaScript は、ビットを出力します。 (ため、 $(ドキュメント).準備ができて(…)) [名前セットを非表示フィールドの値 QueryFriendlyFilters をリテラル値に「空」.

例 2: 使用 <xsl:場合> 「より大きい」をチェックするには,  「より小さい」, など.

<xsl:テンプレート照合」何か =" xml:空間 ="preserve">

  <div id ="fdcAllFilters">
 
    <xsl:場合 test="@Count>0">
      <クラスにまたがる「fdcFilterLabel」=>現在のフィルター:</スパン>
    </xsl:場合>

    <!– 多くの原料をここに起こる. –>

</xsl:テンプレート>

上記のスニペット」、「何か」の要素のカウント」という名前属性が 0 より大きいどうかを確認します。  この背後にある XML のようなものになります。:”

<何かカウント =「5」/>

例 3: すべての要素を反復処理します。, jQuery の呼び出しを interspersing.

<!– すべてのフィルターを反復処理し、正しい表示  リンク. –>
<xsl:各選択 =「UserFilter」>

  <クラス「FilterHref =" href ="javascript:mySubmitPage(' RemoveUserFilter','{@ ID}’)">[X]</は>

  <クラスにまたがる「fdcFilterLabel」=><xsl:値の select="@FilterValue"/></スパン>

  <スクリプトの種類」テキスト/javascript」=>

    $(ドキュメント).準備ができて(関数(){
        <xsl:本文><![CDATA[$(「#QueryFriendlyFilters」).ヴァル( ($(「#QueryFriendlyFilters」).ヴァル() + " ]]></xsl:本文>\"<xsl:値の select="@FilterValue"/>\"<xsl:本文><![CDATA["));]]></xsl:本文>
    });

  </スクリプト>

</xsl:それぞれ>

上記のコードは最も複雑なですし、それをする簡単な方法がある可能性があります。.

この背後にある XML 大体次のように見える:

<UserFilter ID =「123」FilterValue"xyzzy"=/>

このスニペットを反復します。 <UserFilter> ノード。 

それを最初のアンカー出力をクリックするとタグ、ページに既に存在する JavaScript 関数を呼び出す, 「mySubmitPage」と、属性の値を渡すは <UserFilter> "ID"という名前のノード。 

[ページの読み込みに待機するいくつかの jQuery を出力します。  その jQuery FilterValue 属性の値を追加することによって「QueryFriendlyFilters」という名前は非表示のフィールドを更新します。  メモすべての狂気 <xsl:本文> と <![CDATA[ … ]]> もの.

それは, それに役立ちます願っています!

</終了>

私のブログを購読します。.

私は Twitter の上に従ってください。 http://www.twitter.com/pagalvin

Lists.asmx, GetListItems とフォルダー

私は誰が SharePoint の一部として提供されている今日、list.asmx web サービスのいくつかの研究をしていた 2010 (以前のバージョン).  彼女は、ルート フォルダーでリスト アイテムを取得することができた (サブフォルダーの名前を含む), サブフォルダーのアイテムを得ることができなかったが。  私はいくつかのインターネットを見て、それは驚くほど共通の質問です。  まだ, よい解答を簡単な質問を取得できませんでした。, 「私フォルダーを知っている場合, 方法でフォルダーの項目を取得します。?”  正直に言うと, 図のこの 1 つ私自身にはしばらくの間、私は以来私は一生懸命やっていません。 スマイル.

これを設定するには, 「ブログ シナリオ」という名前のサイトと「カスタム リストとサブ フォルダー」という名前のカスタム リストを作成します。  私は、という名前のフォルダーを作成:

  • 年 2005
  • 年 2006
  • 年 2007

」2006 年」のフォルダーにいくつかの項目が追加。  これはどのように見えるです。:

image

私の友人で c# コードを記述はないではなく Java を使用します。, SOAP エンベロープ彼女が本当に必要なので。  取得するには, 私は jQuery のビットを書いて、fiddler を使用して、実際の HTTP 会話をします.

ここでは、関連する jQuery です。 (コピーする場合は、コードを次コピー):

image

最初のキーが両方を含めるには <queryOptions> と <QueryOptions> ノード。  2 番目のキーは、 <フォルダー> ノードは、クライアントがアクセスする URL です。.

これを取得する他の方法がある可能性があります。, しかし、これも私のため jQuery を使用するときに働いた.

ここでは、SOAP エンベロープは、上記の:

<soapenv:封筒 xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:体>
    <GetListItems xmlns =’
http://schemas.microsoft.com/sharepoint/soap/’>
      <姓>サブ フォルダーのカスタム一覧</姓>
      <viewFields>  
        <ViewFields>
          <FieldRef 名 =' タイトル’ />
          <FieldRef 名 ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <フォルダー>
http://demoserver1/ブログ シナリオ、リスト、カスタム リスト サブ フォルダー年間 2006</フォルダー>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:体>
</soapenv:封筒>

多くの例、このトピックの私はすべて私が必要だったと考えているにつながった <QueryOptions> フォルダー名を指定します。  私, 両方を内部ラップします必要があります。 <queryOptions> 同様、完全修飾 URL を指定するには <フォルダー> ノード.

ここでは、jQuery の AJAX のセットアップ:

$(ドキュメント).準備ができて(関数() {
       var soapEnv =
           "<soapenv:封筒 xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:体> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/sharepoint/soap/’> \
                       <姓>サブ フォルダーのカスタム一覧</姓> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef 名 =' タイトル’ /> \
                              <FieldRef 名 ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <フォルダー>http://demoserver1/Blogging シナリオ、リスト、カスタム リスト サブ フォルダー年間 2006</フォルダー> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:体> \
           </soapenv:封筒>";

</終了>

私のブログを購読します。.

私は Twitter の上に従ってください。 http://www.twitter.com/pagalvin

Lists.asmx, GetList と「値 null にすることはできません。”

私は今日の発見は、GetList() メソッドで lists.asmx web サービスは、非常に慎重と呼ばれていますをか神秘的な」値は null にすることはできません」例外をスローする傾向があります。 (だとして、さらに悪いことの一般的なエラー メッセージ過去を得ることができます。, "型の例外 ' Microsoft.SharePoint.SoapServer.SoapServerException’ スローされました。")  具体的には, GetList メソッドに任意の種類のプレフィックスを提供できないこと.  次の jQuery のスニペット、ポイントを示しています:

image

する場合, 「値このあたりとしてヌルできませんと「web サービスの応答 fiddler-HTTP コピーを提供:

<?xml のバージョン ="1.0" エンコーディング =「utf-8」?>
  <soap:封筒
     xmlns:soap ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi =」
http://www.w3.org/2001/XMLSchema-instance
     xmlns:xsd ="
http://www.w3.org/2001/XMLSchema">

  <soap:体>
    <soap:障害>
      <faultcode>soap:サーバー</faultcode>
      <違反>
        例外の種類 ' Microsoft.SharePoint.SoapServer.SoapServerException’ スローされました。.
      </違反>
      <詳細>
        <errorstring xmlns ="
http://schemas.microsoft.com/sharepoint/soap/">
値を null にすることはできません。.
        </errorstring>
      </詳細>
    </soap:障害>
  </soap:体>
</soap:封筒>

もちろんです, おそらくその「s0」プレフィックスを独自の追加はないです。, しかし、いくつかのツールはそれをする傾向があります。 (Eclipse のような).

これはすべてより多くの混乱 / イライラするので、プレフィックスの他の方法を容認します。  例えば, 、 GetListCollection メソッドの気にしないそれが付いているかどうか, "xyzzy"のようなナンセンス プレフィックスも:

image

これは、「値は、null にできません」そううまく行けばこれが助ける誰か将来の lists.asmx でかなり一般的なようです。.

</終了>

私のブログを購読します。.

私は Twitter の上に従ってください。 http://www.twitter.com/pagalvin

無限のネスト <div> タグと jQuery

これは、ようなのような型破りなトピックです。, 私はそれは本当にについてのブログの価値があるか分からない, しかし、決して私の前に停止しています。, だからここに行く スマイル

私はここで私はいくつかのデータの検索から引っ張ってプロジェクトに取り組んでいます。, パッケージ XML メッセージにし、XML は、最終的に XSLT で HTML に変換されます。  たくさんある jQuery の関与, 1 つのビットはいくつかのタブ機能を実装します。  上のタブをクリックすると (本当に, は <div>), jQuery の .hide を呼び出す() .show() さまざまな div に (ポストバックがないのでこの場合、最初のページのロードのすべてのコンテンツをダウンロードします。).

前の束, 動作が不安定にロジックを切り替えタブを開始し、それは私のタブのいずれかを表示されません。  私は最終的には、実際には、インターネット エクスプ ローラーを追跡 (少なくとも) 考え、 <div> これまで入れ子になったタグ, 意図したよりもはるかに深い。[開発者用] ツールバーを表示します。:

-<div id ="Tab1Content">
  -<div>
    -<div>
      -<div id ="Tab2Content">
        -<div>
           …………………………
                   </div>  <— 最後にそれを表示では、ここにすべての方法を閉鎖されました。!

だから, か、 $(「# Tab1Content」).非表示します。(), 私はまた Tab2 を隠すだろうし、私は私がまた Tab1 を示さなかったかどうか Tab2 を見ることが。  コピーし、visual studio と、すべての div の裏地をうまく示したにコードを貼り付け, 同じように彼らのことになっていた, このような:

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

私はしばらくの間の壁に対して私の頭を打つし、実際の HTML の多くの空のコードを生成していたことに気づいた <div> タグ, ような:

<体>

  <div id ="Tab1Content">

    <div id」row1」=/>
    <div id」[row2」=/>

  </div>

  <div id ="Tab2Content">

    <div id」row1」=/>
    <div id」[row2」=/>

  </div>

</体>

(上記の単純にしすぎ waaaaaaaaaaaay です。  空の div タグが完全に有効であります。. いくつかの私 <div> タグの内容でした。, しかし、多くはなかった。  私は実現に来た、私 <xsl:それぞれ> ディレクティブは、短い形式が発光された div タグと xsl:各 didn't ' のデータを見つけます。  私は、出力に、HTML コメントを強制, 示すように:

image

 

私はそれをした後, すべての div がきれいに並んで、私のタブの切り替え作業開始.

いつものように, これはピンチで誰かに役立ちます願っています.

</終了>

私のブログを購読します。.

私は Twitter の上に従ってください。 http://www.twitter.com/pagalvin

まだ多くの jQuery–画像例のサイズを変更します。

Web パーツはクライアントの古いベンダーから継承し、は、イメージのサイズの問題。  画像 60 する必要があります。×50 しかし、いくつかの奇妙な理由のため, 元のベンダーを 42 に強制×42, 彼らぺしゃんこになったので:

 

良いイメージ

悪いイメージ

ここでは、マークアップです。 (簡略化多少):

<テーブル クラス ' 拡張 outlook'=>
  <thead>
    <tr>
      <th  幅 = 100′>3 火曜日</th>
    </tr>
  </thead>

  <tbody>
    <tr クラス '予想' =>
      <td 幅 = 100′>
        <ul>
          <李クラス '高' =>高: 72&度;F</李>
          <李クラス '低' =>低: 44&度;F</李>
          <李クラス = '条件'>日当たりの良い
            <img src =’
http://deskwx.weatherbug.com/images/Forecast/icons/localized/60×50/en/trans/cond007.png’ 幅 42年 =’ 高さ = 42年’ alt =” />
          </李>
        </ul>
      </td>
    </tr>

  </tbody>

</テーブル>

注意してよ、 イメージ自体へのパス 適切なディメンションが表示されます。 (60×50) 元のベンダーは 42 の強制×42.  なぜ?  クレイジー.

とにかく, 私は速く、容易な解決策と私は jQuery になっています。  すべての適切なを検索するにはトリックをだった <img> タグ。  他の img タグに小屋の掃除したがらなかったのですが。 (多くある).  このビットの jQuery のトリックをでした。:

<スクリプトの種類」テキスト/javascript を =" src ="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></スクリプト>

<スクリプトの種類」テキスト/javascript」=>
     $(ドキュメント).準備ができて(関数 () {

         $(' li.condition > img').各(関数 (インデックス, 項目)
           
{
             $(項目).css(「幅」, 「60」); 
             $(項目).css(「高さ」, 「50」);
            });
     }); // ドキュメントの負荷
</スクリプト>

そのビット コードのコレクションを検索します。 <李> タグ クラス「条件」と <img> 子供たち。  それは、すべてのことを反復処理します。  見事に成功しました.

私はおそらくそれを合理化できます。, しかし、私はなかった、π を解決 unix 男の種類 宛先 18 sed や awk 桁精度、jQuery のいずれかの男と私はそのような スマイル.

</終了>

私のブログを購読します。.

私は Twitter の上に従ってください。 http://www.twitter.com/pagalvin

グローバルのポップアップ通知システムを実装します。

私の記事を書いた www.sharepoint.briefing.com 権利」グローバルのポップアップ通知システムを実装します。.”  この関数は、コミュニティ カレッジの雪のための学校の統廃合など通信に実装されました。 

カスタム リストを使用してください。, アウト ボックスの SharePoint web サービスとの作業を行うにいくつかの jQuery.

ここでは、お誘い:

image

ここに全部を読む: http://www.sharepointbriefing.com/features/article.php/3918471/Implement-a-Global-Pop-up-Notification-System.htm

</終了>

私のブログを購読します。.

私は Twitter の上に従ってください。 http://www.twitter.com/pagalvin

OK およびキャンセル ボタンを制御します。

私が書いた この記事 中に戻る, 私はそれを私のブログから、時にリンクしていないように見えるが, そうここに行く:

image

彼女はキャンセルをクリックすると、ユーザーは OK と別のページでクリックすると 1 つのページにリダイレクトする newform.aspx を強制する方法について説明します。.

</終了>

私のブログを購読します。.

私は Twitter の上に従ってください。 http://www.twitter.com/pagalvin