- PR -

AjaxツールのTabindexについて

1
投稿者投稿内容
oka
常連さん
会議室デビュー日: 2007/11/19
投稿数: 25
投稿日時: 2008-01-31 23:17
お世話になります。
Ajaxツール(Ver1.0)のTabについてアドバイスをお願いいたします。
(環境:VS2005、VB Web開発)

AjaxツールのTabContainerを使用してタブを3枚配置しています。
タブを切り替えたときに、それまでアクティブだったタブの内容をクリアする処理
(テキストボックスの入力内容を消去する、プルダウンの内容を初期状態に戻すなど)をしたいため、
TabcontainerのActiveTabchangedイベントにこれらの処理を書いています。

ただ、現在は切替前のタブのindexを取得する方法が分からず、
ActiveTabchangedイベントが発生するたびに全てのタブの内容をクリアする処理を書いて、何とか動かしております。

それまでアクティブだったタブを取得する方法がありましたら、よろしくお願いいたします。

Tesla
常連さん
会議室デビュー日: 2007/03/13
投稿数: 30
投稿日時: 2008-02-01 23:36
Change系のイベントハンドラよりもPage_Loadの方が先に呼ばれるので、Page_Loadでアクティブなタブを退避しておけばいいのではないでしょうか。

コード:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page {

	AjaxControlToolkit.TabPanel _previousTab = null;

	protected void Page_Load(object sender, EventArgs e) {
		HttpContext.Current.Trace.Warn("Page_Load", "Page_Loadが呼ばれました。");

		if (IsPostBack) {
			_previousTab = TabContainer1.ActiveTab;
		}
	}

	protected void TabContainer1_ActiveTabChanged(object sender, EventArgs e) {
		HttpContext.Current.Trace.Warn("ActiveTabChanged", "ActiveTabChangedが呼ばれました。");
		HttpContext.Current.Trace.Warn("変更前Tab.ID", _previousTab.ID);
		HttpContext.Current.Trace.Warn("変更後Tab.ID", TabContainer1.ActiveTab.ID);
	}
}



トレース情報
aspx.page: Begin PreInit
aspx.page: End PreInit
aspx.page: Begin Init
aspx.page: End Init
aspx.page: Begin InitComplete
aspx.page: End InitComplete
aspx.page: Begin LoadState
aspx.page: End LoadState
aspx.page: Begin ProcessPostData
aspx.page: End ProcessPostData
aspx.page: Begin PreLoad
aspx.page: End PreLoad
aspx.page: Begin Load
Page_Load: Page_Loadが呼ばれました。
aspx.page: End Load
aspx.page: Begin ProcessPostData Second Try
aspx.page: End ProcessPostData Second Try
aspx.page: Begin Raise ChangedEvents
aspx.page: End Raise ChangedEvents
aspx.page: Begin Raise PostBackEvent
ActiveTabChanged: ActiveTabChangedが呼ばれました。
変更前Tab.ID: TabPanel1
変更後Tab.ID: TabPanel2
aspx.page: End Raise PostBackEvent
aspx.page: Begin LoadComplete
aspx.page: End LoadComplete
aspx.page: Begin PreRender
aspx.page: End PreRender
aspx.page: Begin PreRenderComplete
aspx.page: End PreRenderComplete
aspx.page: Begin SaveState
aspx.page: End SaveState
aspx.page: Begin SaveStateComplete
aspx.page: End SaveStateComplete
aspx.page: Begin Render
aspx.page: End Render
oka
常連さん
会議室デビュー日: 2007/11/19
投稿数: 25
投稿日時: 2008-02-05 22:58
回答ありがとうございます。
アドバイスをいただきましたとおり、Page_Loadでアクティブタブのインデックスを退避し、TabContainer1_ActiveTabChangedで退避しておいたタブインデックスを指定してタブの内容をクリアする、
という処理で実現できました。
ありがとうございました。
1

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