右メニューのメニューから各エンティティを選択すると右ペインにリスト(グリッド)が表示されます。リストの右上にリフレッシュ用の画像が既定で作成されます。この画像をクリックするとグリッド内部が最新の情報にリフレッシュされます。

今回は、Entityのリストのツールバーを拡張して、カスタムボタンを追加し、Javascriptを使用してリストをリフレッシュする方法を紹介します。サンプルではユーザのリストメニューに対してリフレッシュメニューを追加します。

動作確認環境は次のとおりです。

  • Dynamics CRM 4.0
  • クライアント IE7

1. ISV.config 拡張の有効化

今回は、リストのツールバーを拡張するので、ISV.config のカスタマイズがブラウザで有効化される必要があります。ブラウザに対して、ISV.config の拡張を有効化する方法は、[DynamicsCRM]ISV.config クライアント拡張を有効にする を参照して下さい。

2. ISV.config の編集

既定のISV.config をエクスポートします。Dynamics にログインし、左メニューの設定→カスタマイズをクリックして、カスタマイズ画面を右ペインに表示増す。右ペインのカスタマイズのエクスポートをクリックします。

カスタマイズのエクスポート画面が表示されます。ビューのドロップダウンからクライアント拡張をクリックします。リストないのISV Config を選択してリスト上位のツールバーから選択したカスタマイズのエクスポートをクリックして、ローカルにcustomizations.zip を保存します。

customizations.zip を解凍して、customizations.xml をノートパッドなどで開き、Entityies 要素の直下に<Entity name="systemuser"> の要素を追加します。修正したファイルはUTF-8 形式で上書き保存します。

<!-- Microsoft Customer Relationship Management Entities (Objects) -->
  <Entities>
    <Entity name="systemuser">  
     <Grid>  
       <MenuBar>  
          <ActionsMenu>  
              <MenuItem JavaScript="alert('refresh!!');crmGrid.Refresh();" WinMode="1" WinParams="dialogWidth:250px;dialogHeight:150px" PassParams="1" >  
              <Titles>  
                <Title LCID="1041" Text="リフレッシュ!!" />  
                  </Titles>  
              </MenuItem>  
          </ActionsMenu>  
       </MenuBar>  
     </Grid>  
    </Entity>  
  <!-- 以下省略 -->
  <Entities>

修正したISV.config をインポートします。Dynamics にログインして、左メニューの設定→カスタマイズを選択します。右ペインのカスタマイズのインポートをクリックします。

カスタマイズのインポート画面で、ファイルのインポートで編集したcustomizations.xml を選択し、アップロードボタンをクリックします。xmlに問題がなければ、リストにISV Config が表示されるので、ISV Config を選択しリスト上位ツールバーの選択したカスタマイズのインポートをクリックして、インポートを行います。

3. 動作確認

インポート完了後、いったんログアウトします。Dynamics に再ログインし、設定→管理の順にメニューを選択して、右ペインに表示される管理画面からユーザを選択します。

ユーザのリストビューのツールバーのその他の操作をクリックすると、表示されるメニューにリフレッシュボタンが追加されていることを確認します。リフレッシュボタンをクリックするとグリッドがリフレッシュされることが確認できます。

4. まとめ

今回の説明は以上です。crmGrid は、いろいろなメソッドが用意されているので、Visual Studio でプロセスにアタッチするなどしていろいろ確認してみると面白いと思います。

というよりCrmGridで使用できるAPIなど、クライアントサイトのDynamics CRM の API てしっかりドキュメント化されて公開されていたっけ? 

公開されているなら場所を教えていただきたいです。