C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: AjaxToolkit の TabContainerについて


(過去ログ 82 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■48365 / inTopicNo.1)  AjaxToolkit の TabContainerについて
  
□投稿者/ def (5回)-(2010/04/03(Sat) 19:30:59)

分類:[ASP.NET (C#)] 

ASP.net Framework3.5 AjaxContorolToolkit(3.0.30930)

お世話になります。

上記環境で、TabContainer を使用しています。
これを、クライアント側のバリデータチェック後にエラーがあればタブ変更をキャンセル
もしくは元のタブに戻す、という動作をさせたいと思っています。

これは可能でしょうか?

デバック実行で OnClientActiveTabChanged を見てみたのですが、どうもこれは
アクティブなタブが変わった後のイベントのようで、キャンセルするメソッド等は
見当たりませんでした。
しかもタブが変わった後なので、アクティブタブ変更前のタブが何かはわかりませんでした。


要は、隠れているタブで IsValid = false になるような場合、そのタブを
アクティブにしたいという事なのですが。


上記動作が不可だとして、代替案としては、Validate チェックが行われるボタン押下の
クライアントクリックで(エラーがあれば)無理やりアクティブタブを変更
という方法でも構いません。
ボタンに設定した おnClientClickで以下を実装?
 
Javascriptでアクティブタブが変更出来るなら、自分でクライアント側の
Validate(ValidatorValidateだったかな?)を実行してエラーなら・・・と
やってあげれば良いと思うのですが。。。

よろしくお願いいたします。

引用返信 編集キー/
■48372 / inTopicNo.2)  Re[1]: AjaxToolkit の TabContainerについて
□投稿者/ やじゅ (1584回)-(2010/04/04(Sun) 02:09:08)
やじゅ さんの Web サイト
No48365 (def さん) に返信
> これを、クライアント側のバリデータチェック後にエラーがあればタブ変更をキャンセル
> もしくは元のタブに戻す、という動作をさせたいと思っています。
>
> これは可能でしょうか?

翻訳をみる限り、このサイトが参考になりそうです。
http://vincexu.blogspot.com/2009/05/how-to-cancel-tab-active-changing-with.html
引用返信 編集キー/
■48380 / inTopicNo.3)  Re[2]: AjaxToolkit の TabContainerについて
□投稿者/ def (6回)-(2010/04/04(Sun) 12:44:29)
No48372 (やじゅ さん) に返信

やじゅさんありがとうございます。試してみました。

サンプルページで、以下のコードで実装できました。
後はバリデータ関連を調整してあげれば、やりたい事は出来そうです。

もうひとつの例にあった、イベントの追加に関しては、当環境では
エラーが発生してしまい(何らかの設定忘れだと思いますが)試せませんでした。

AjaxToolKit関連のjs改造に関しては、無知なせいもあり、なかなか難しいです。

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


-------------------------------------------------------------------
<body>
<form id="form1" runat="server">
	<ajaxToolkit:ToolkitScriptManager runat="Server" EnablePartialRendering="true" ID="ScriptManager1" />
	<ajaxToolkit:TabContainer runat="server" ID="TabContainer1">
	<ajaxToolkit:TabPanel runat="server" ID="TabPanel1" HeaderText="TabPanel1">
	<ContentTemplate>
	TabPanel1
	<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
	<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
		ControlToValidate="TextBox1"
		ValidationGroup="Entry"
		Display="Dynamic"
		ErrorMessage="必須です"></asp:RequiredFieldValidator>
	</ContentTemplate>
	</ajaxToolkit:TabPanel>
	<ajaxToolkit:TabPanel runat="server" ID="TabPanel2" HeaderText="TabPanel2">
	<ContentTemplate>
	TabPanel2
	</ContentTemplate>
	</ajaxToolkit:TabPanel>
	</ajaxToolkit:TabContainer>
	</form>
</body>
<script type="text/javascript">
	AjaxControlToolkit.TabPanel.prototype._header_onclick = function(e)
	{
		this.raiseClick();
		if (isValidated()) // add this additional code line to do validation
			this.get_owner().set_activeTab(this);

	};

	function isValidated()
	{
		Page_ClientValidate("Entry");
		if (!Page_IsValid)
			return false;
		return true;
	}
</script>

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -