- PR -

[ASP.NET2.0]Multiview/Viewをjavascriptで切り替えるには?

投稿者投稿内容
ぴぃ子
常連さん
会議室デビュー日: 2008/02/21
投稿数: 34
投稿日時: 2008-04-14 17:01
いつもお世話になっております。

WinアプリのTabコントロールと同動作するものを作成するために
Menu,MultiView/Viewを使用しました。

しかしポストバックが発生し、画面がちらつくのでできればクライアントで切り替えたいと思って悩んでいます。

サーバ側のActiveIndex等のプロパティで切り替えようとしてみたのですが
エラーになってしまいます。
document.getElementById('MultiView1').ActiveIndex=0;

Multiview/Viewをjavascript側でコントロールすることはできないのでしょうか?

ここで以前にも書き込みされた方がいらっしゃいましたが、それに関しての返答はなしだったので無理なのか?とも思いつつも何かあるのではないか?と四苦八苦しています。

みなさまどうぞよろしくお願い致します。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-04-14 17:36
無理だと思います。
なぜなら、MultiView/Viewを使って表示したページには、隠れているViewの情報が存在しないからです。

クライアント側で切り替え操作を行うには、少なくとも非表示のViewに関する情報もページ内で持っておく必要があります。
例えば、ASP.NET AJAXのTabsコントロールを使った方法がそれです。
http://www.atmarkit.co.jp/fdotnet/dotnettips/565aspajaxtabs/aspajaxtabs.html

我慢してMultiView/Viewを使われたほうがよいと思います。
リンク先にもありますが、ページ内で全てのタブの情報を持つというのはレスポンス低下のおそれがありますので。

# フレームを使うという手もあることはありますが、お勧めはしませんし。
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-04-14 17:41
画面がちらつくのであればUpdatePanelなど使ってみてはどうでしょうか?
(Web使うのでちらつくのは仕方ないと思いますが。。。。)
ぴぃ子
常連さん
会議室デビュー日: 2008/02/21
投稿数: 34
投稿日時: 2008-04-14 20:12
rainさん ご返答ありがとうございます。
 無理だという情報を得られただけでも有益でした。
 設計時点でWinアプリと同様の動作を求められている節があり悩んでる時間が長いです。

indigo-xさん ご返答ありがとうございます。
 UpdatePanelですか?UpdatePanel=Ajaxとイメージがあり、まだとりかかりも勉強していません(汗
 調査と開発が同時進行の状況でとにかく大混乱中です。

これからも初歩的な質問ばかりだとは思いますが、どうぞよろしくお願い致します。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-04-14 21:05
引用:

ぴぃ子さんの書き込み (2008-04-14 20:12) より:

 設計時点でWinアプリと同様の動作を求められている節があり悩んでる時間が長いです。


なんとなくそんな予感はしていたのですが、まだ変更可能なのであれば
Windowsフォーム + Webサービスという組み合わせをお勧めしたいところです。

# 関係ないですが、私が今いる現場は
# Webシステムを上の形で作り直すことを検討中だったりします。

AJAXを使って頑張るよりは技術的なしきいは低いと思いますし(個人的感想)、
今後も同様のことで苦労されることを考えると…。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-04-15 07:04
個人的には、MultiView/ViewにAJAXを適用することをお勧めします。UpdatePanelなどを適用するとWebページを部分的に更新できますので画面のちらつきを回避できます。

これを機会にAJAXを勉強してみてはどうでしょうか。

Silverlight2 + AJAXでWebアプリを開発すると、Windowsアプリにかなり近いWebアプリ
が構築できそうです。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
ぴぃ子
常連さん
会議室デビュー日: 2008/02/21
投稿数: 34
投稿日時: 2008-04-15 09:26
rainさん、Accessさん ご返答ありがとうございます。

>Windowsフォーム + Webサービスという組み合わせ
は私も気になる所です。既にWinアプリで開発したものをユーザーは使用しており
基本的に同動作を求められます。
今回は既存そのものに問題があるのではなく、合わせて使用していたソフトが
今後サポートされないとのことでの(ついでの?)Web開発…(汗
しかし、使用するベースの技術は上の人間が決めており変更できません(涙
…ってこれではただの愚痴です。スミマセン。
この方法を取れば既存の資産を利用できていいだろうなぁ…とつぶやいています。

>Silverlight2 + AJAXでWebアプリを開発すると、Windowsアプリにかなり近いWebアプリ
こちらはまだ貧弱な頭でついていけないのですが、非常に魅力的な話しですね!
AJAXを適用する事は今回は無理かもしれませんが勉強してみたいです。
本屋やネットを徘徊しつつ、頑張りたいと思います。

またみなさまどうぞよろしくお願い致します。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-04-15 13:28
コード:
<div id="tab1" style="border:solid 1px black" >タブ1</div>
<div id="tab2" style="border:solid 1px black;display:none;" >タブ2</div>
<input value="タブ1隠す" type="button" onclick="document.getElementById('tab1').style.display='none';" />
<input value="タブ2見せる" type="button" onclick="document.getElementById('tab2').style.display='block';" />

javascriptでこんな感じのことはできます。なのでタブがせいぜい数個であれば
情報を全部クライアントに吐いといて、表示非表示を切り替えるという手法が使えます。
せっかく作ったMenu,MultiView/Viewは使えませんが。

AJAXは確かにあまり理解しないで使わないほうがいいし、プロジェクト全体で導入するか
しないか統一したいところですね。ただ、AJAX.NETはコーディング自体は楽です。
今回のMenu,MultiView/Viewでしたら、基本的に、環境設定して、AJAX.NETのコントロールを
2つほど配置して、既存のコントロールをちょいと移動するだけですから。
イベントハンドラを修正する必要がないのが魅力です。

スキルアップ/キャリアアップ(JOB@IT)