DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Page_Loadで現在のValidationGroupを取得する方法はありますか?

環境/言語:[.NET Framework2.0/ASP.NET/Ajax(Microsoft Ajax Toolskit)]
分類:[ASP.NET]

こんにちは。アべです。

Ajax(Microsoft Ajax Toolkit)を使用してアプリケーションを作成しております。

UpdatePanelを使用したエラー処理で入力エラー後にフォーカスの制御を
入れたいと考えており、それを実装するためにPage_Loadイベントで
現在のValidationGroupを取得したいと考えておりますが、
そのやり方がわからずに困っております。

補足
エラー後のフォーカス処理は、非同期通信が終った後に
自動的に行われるので、通常のフレームワークの制御
にまかせてValidatorのSetForcusOnErrorプロパティで機能しません。

独自にフォーカス制御を入れたいのですが、現在のPostBackで
ValidationGroupの取得が出来ずに困っております。

どなたかやり方のわかる方がおりましたら、ヒントでも宜しいで
アドバイスをお願いいたいます。






---
阿部清隆
すみません。自己解決しました。

ベースページのOnPreRenderを実装し、そこで、Ajaxの非同期通信後の
フォーカス遷移処理とValidatorのエラー後のフォーカス移動処理を
入れて対応できました。

Page_Load⇒validator⇒Page_PreRenderイベントと続くらしいので、
フォーカスの処理は全てPage_PreRenderイベント内で実装して
見たところ上手く処理できました。

有難うございました。


↓こんなイメージ
protected override void OnPreRender(EventArgs e)
{
string controlToValidate = "";
if (IsPostBack == true)
{
controlToValidate = 入力エラーのコントロールID取得();
}
else
{
フォーカスコントロールをフックする(HookOnFocus(this.Page as Control);
}

if (controlToValidate != "" && IsValid == false)
{
ScriptManager.RegisterStartupScript(
this,
typeof(_Default),
"ScriptDoFocus",
SCRIPT_DOFOCUS.Replace("REQUEST_LASTFOCUS", controlToValidate),
true);
}
else
{
ScriptManager.RegisterStartupScript(
this,
typeof(_Default),
"ScriptDoFocus",
SCRIPT_DOFOCUS.Replace("REQUEST_LASTFOCUS", Request["__LASTFOCUS"]),
true);
}
base.OnPreRender(e);
}

DOBON.NET | プログラミング道 | プログラミング掲示板