Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

ASP.NET AJAXとSPREADの連携

SPREAD for .NET Web Forms EditionのAJAXエンジンを活用する

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/08/28 14:00

 ASP.NET AJAXのUpdatePanelにはASP.NET標準のサーバコントロールを配置できるだけでなく、ASP.NET AJAXに対応しているコントロールであれば、サードパーティ製のコントロールを配置することができます。ここではSPREAD for .NET Web Forms Editionを配置し、簡単なカレンダーアプリケーションを作成していきます。

目次

はじめに

 AJAXは、Webアプリケーションに大きな可能性をもたらしました。JavaScriptとXMLという既存技術の組み合わせによりWebページを部分的に、そして非同期的に更新することが可能となりWebアプリケーションは、かつてない程の対話性やレスポンスを手にしたのです。

 市場はAJAXの出現に極めて敏感に反応し、サードバーティ製のフレームワークやコンポーネントが数多く出現しました。そのような中、マイクロソフト社ではASP.NET AJAX(ATLAS)の開発が進められ、2007年1月にリリースされました。これはまさにASP.NET開発者が待望したリリースであり、今後はAJAXの活用がますます進むと考えられます。

 SPREAD for .NET Web Forms Ed.(以下、SPREAD)ではASP.NET AJAX出現以前から独自のAJAXエンジンを実装してきており、先ごろリリースされた3.0JにおいてASP.NET AJAXへの対応を完了しました。そこで、本稿ではASP.NET AJAXとSPREADを使用したサンプルアプリケーションを作成していきます。

ASP.NET AJAXで提供されるUpdatePanelで容易にWebページをAJAX化できる

 ASP.NET AJAXの中でもUpdatePanelは使用する頻度の高いコントロールではないでしょうか。UpdatePanelにはASP.NET標準のサーバコントロールを配置できます。またASP.NET AJAXに対応しているコントロールであれば、SPREADなどサードパーティ製のコントロールを配置することができます。

 ASP.NET AJAXはUpdatePanelに配置したコントロールで発生する更新をコールバックで処理します。つまり開発者はコントロールをUpdatePanelに配置することで容易にページをAJAX化できます。

UpdatePanelがあればSPREAD AJAXは要らない?

 前の段落で、UpdatePanelにSPREADを配置してAJAX化できると言いました。そうであるならSPREADのAJAXエンジンは要らなくなってしまうのでしょうか?

 いいえ。そんなことはありません。ここではUpdatePanelとSPREAD、それぞれのコールバックの違いについて説明したいと思います。

 確かにUpdatePanelは非常に強力です。開発者はUpdatePanelに複数のコントロールを配置することができます。ボタンに、ラベルに、ドロップダウンリストに、SPREADなどです。そして、これらのコントロールはお互いに連携して動作させることができます。例えばボタンをクリックしてラベルに文字列を設定する、ドロップダウンリストのアイテムを選んでSPREADのシートを切り替えるといった処理ができます。これらの処理がすべてページ全体を更新するポストバックではなく、UpdatePanelの限定された領域のみを更新するコールバックで処理されます。これがUpdatePanelにコントロールを配置するだけで自動的に行われます。開発者がサーバサイドのコーディングを行う際に従来のポストバックではなく、コールバックにより処理が行われていると意識することはほとんどないでしょう。

 なぜ、そのようなことが可能なのでしょうか。それはUpdatePanelの中のコントロールがすべて更新されるからです。つまり、ボタンに、ラベルに、ドロップダウンリストに、SPREADなどUpdatePanelへ配置したコントロールがすべて更新されます。極端な話ですが、ページに配置するコントロールをすべて1つのUpdatePanelの中に配置した場合、コールバックで受信するデータ量や再描画に要する時間は通常のポストバックとほぼ同じと言えます。

Panel内がすべて更新される
Panel内がすべて更新される

 それではSPREAD AJAXは何が違うのでしょうか。SPREAD AJAXはSPREADのみを更新します。UpdatePanelのようにページに配置されたSPREAD以外のコントロールを更新することはできません。その代わり、SPREAD AJAXによるコールバックで受信するデータ量、再描画に要する時間はSPREADに限定されたものです。UpdatePanelにSPREADやSPREAD以外のコントロールを複数、配置した場合と比べて更新処理は軽いものになるでしょう。

SPREADのみ更新される
SPREADのみ更新される

 SPREAD AJAXの使用方法はいたってシンプルです。プロパティをtrueに設定するだけです。

VB
' SPREAD AJAXを有効にする
FpSpread1.EnableAjaxCall = True
C#
// SPREAD AJAXを有効にする
FpSpread1.EnableAjaxCall = true ;

 このコードにより、SPREADの基本操作(行の追加/削除/ソート/フィルタリング/グループ化、ページング、ロードオンデマンド、ドラッグ&ドロップによる列移動)がSPREAD AJAXで処理されます。

 また、SPREADは300種類以上の表計算関数を提供していますが、これらの関数や数式の計算処理はサーバ側に配置されたアセンブリで実装されているため、AJAXが登場する以前は再計算を実施するためにポストバックが必要でした。AJAXの登場により、数式の再計算をコールバックで処理できるようになりました。次のようにプロパティをTrueに設定します。

VB
' AJAXによる数式の自動再計算を有効にする
FpSpread1.ClientAutoCalculation = True
C#
// AJAXによる数式の自動再計算を有効にする
FpSpread1.ClientAutoCalculation = true;

 また、応用としてコールバック関数を使ってアプリケーション側でAJAXエンジンを使用する方法があります。詳細は製品ヘルプのクライアント側スクリプトリファレンス「CallBackメソッド」を参照してください。

 ASP.NET AJAXのUpdatePanelを使用した場合と、SPREAD AJAXを使用した場合では次のような違いがあります。

  他コントロールとの連携 パフォーマンス
ASP.NET AJAX UpdatePanel UpdatePanel内外に配置された複数のコントロールと連携した処理が可能 UpdatePanel内に配置するコントロールが増えると更新処理が重くなる
SPREAD AJAX SPREAD以外のコントロールは更新できない SPREADだけ更新するので上の場合に比べて更新処理が軽い

 AJAXによりSPREADと他のコントロールを連携して動作させたい場合はUpdatePanelが必要です。他のコントロールと連携する必要が無く、SPREADのみを更新したい場合、SPREADのAJAXエンジンを使用すると処理の高速化を期待できます。必要に応じてASP.NET AJAXとSPREAD AJAXを使い分けることでアプリケーションの可能性は大きく広がることでしょう。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • グレープシティ株式会社(グレープシティカブシキガイシャ)

     宮城県仙台市に本社を構えるグレープシティでは、日本の業務に適したシステムをより早く開発するためのソフトウェアを提供しています。エンドユーザーの利用しやすさ、幅広いユーザー環境への対応、そして何よりプログラマの作業を軽減することを一番に目指しています。 公式サイト...

バックナンバー

連載:現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(SPREAD)

もっと読む

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5