SPREAD for .NET Web Forms EditionのAJAXエンジンを活用する
グレープシティ株式会社 [著] 2007/08/28 14:00

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

1 2 3 4 →

はじめに

 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 UpdatePanelUpdatePanel内外に配置された複数のコントロールと連携した処理が可能UpdatePanel内に配置するコントロールが増えると更新処理が重くなる
SPREAD AJAXSPREAD以外のコントロールは更新できないSPREADだけ更新するので上の場合に比べて更新処理が軽い

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


プロフィール
グレープシティ株式会社 グレープシティカブシキガイシャ

グレープシティは「PowerTools」シリーズで知られるコンポーネントベンダーです。
1993年からMicrosoft社のプラットフォームをベースとした高品質なコンポーネントを広く海外から厳選し、日本市場に提供し続けています。独自の技術も盛り込んだ使いやすく安定した製品ラインナップは長年の実績に裏打ちされ、開発の現場からは常に高い評価と圧倒的な支持を得ています。また、アメリカをはじめ中国、インドなど国内外の拠点から先進技術を有するスタッフが日本企業を強力にサポートするソリューション開発(GGS:GrapeCity Global Services)も展開しています。

HP:http://www.grapecity.com/japan/


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト