- PR -

TabContainerでクリック後のアクティブな位置を取得

1
投稿者投稿内容
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2009-01-24 23:44
お世話になります。

Ajax の TabContainer を配置しタブを3つ追加しています。
この時、タブをクリックした位置(番号)を取得したいのですが、どうしたらクリック後のアクティブな位置を取得できますか?

TabContainer1_ActiveTabChanged() を追加してみましたが、これは初期時に1回呼ばれるのみでした。
OnClientActiveTabChanged にJavaScript のコードを呼ばせてみましたがクリックした位置が取得できずまた、それをサーバー側に伝えられなくて断念。
AutoPostBackをTrue にすると TabContainer1.ActiveTabIndex; が取得できますが、これは、クリックする前のタブ位置です。
どうしたら、クリック後のタブ位置を取得できますか?
教えてください。

ASP.NET C#
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2009-01-25 07:14
↓を参照してみてください。

http://forums.asp.net/p/1369838/2859144.aspx
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2009-01-25 10:42
お世話になります。

> Now, keep in mind that this control is sitting within an AJAX UpdatePanel so > only a partial postback occurs and it works fine.
によるとAJAX の UpdatePanel 内にタブコンテナを配置すれば、そこでポストバックが発生しTabContainer1_ActiveTabChanged() クリックの度に呼ばれるようになりました。

ありがとうございました。
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2009-01-25 12:31
お世話になります。

できました!と言って先ほど言いましたが、1つ問題が起きました。

実は、タブコンテナの中に GridView を配置していて「編集」ボタンを押しても編集モードにならず、
「Sys.WebForms.PageRequestManagerParserErrorException:The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), ....」
というメッセージが出ます。サーバー側が処理できないようですがどうしたらいいですか?教えてください。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2009-01-26 07:06
ASP.NET 3.5 SP1でも発生しますか?
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2009-01-26 10:05
お世話になります。

> ASP.NET 3.5 SP1でも発生しますか?
残念ながらVS2005なので使用できません。

表示メッセージ内に「....Response.Write(), response.filters, HttpModules....」
とあって、これらをもとに下記を確認してみました。
まず、コードは、マスターページの子に上記のAjax TabContainer があります。
エラーメッセージに該当すると思われる部分は、マスター内のPage_Load()にある
Response.Write("予約が入っている.....");の1文ぐらいでした。
とりあえずこれをコメントしてみるとエラーは出なくなりました。
しかし、Response.Write文は、メッセージ表示によく使うであろうと思いますので、もし実行時に、このエラーメッセージが出るとなるとちょっと不便になりそうです。

実際、マスタ内でResponse.Writeは、Try -- catch を除くと2,3か所のみなので対応できなくは、ないようですが.....

上記のResponse.Write("予約が入っている.....");は、単なる覚書程度なので、今回は、コメントにしました。
単に、コメントアウトでOKなのかどうかわからないので、このまま、様子を見てみます。

ありがとうございました。
1

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