- PR -

[ASP.NET/C#]JavaScriptからのポストバックについて

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-27 18:25
引用:

ゆうじゅんさんの書き込み (2004-01-27 18:17) より:

CustomValidatorのControlToValidateプロパティを無指定にすれば
submit時にチェックするようになります


 「割り当てなければなりません」ってエラーになったような?…あれ?エラーにならない??割り当てなければならないと思っていたので、なんだかショック。
夏姫☆
会議室デビュー日: 2003/12/11
投稿数: 15
投稿日時: 2004-01-27 18:47
引用:

ゆうじゅんさんの書き込み (2004-01-27 18:17)

CustomValidatorのControlToValidateプロパティを無指定にすれば
submit時にチェックするようになります


ゆうじゅんさん、↑でできました。ありがとうございます!!
指定しないなんてありなんですね。
絶対指定しなければいけないものかと思ってしまっていました。

Jittaさんに教えていただいた方法で試してみましたが、
検証用の関数の見極めが間違っていたのか、チェックが行われなく
なってしまいました。

ソースを表示したところ

<input type="submit" name="Button1" value="チェック"
onclick="if (typeof(Page_ClientValidate) == 'function')
Page_ClientValidate(); " language="javascript" id="Button1"
style="width:71px;Z-INDEX: 102; LEFT: 442px; POSITION: absolute;
TOP: 85px" />
<span id="InputCheck" controltovalidate="TextBox1"
errormessage="データが入力されていません"
onfunction="CustomValidatorEvaluateIsValid"
clientvalidationfunction="DataCheck"
style="color:Red;Z-105;LEFT:57px;POSITION:absolute;TOP:49px;
visibility:hidden;">データが入力されていません</span>

と表示されたので、Page_ClientValidate();が検証用の関数だと思い、

Page_Load()で

Button1.Attributes["onclick"]="JavaScript:InputCheck.enabled=true;Page_ClientValidate();InputCheck.enabled=false;";

としたのですが(InputCheckは検証コントロールのID)、
検証されずにポストバックされてしまいました。
この方法が使えれば、いろいろ応用できるなと思いましたが、
なかなか難しいですね…。

[ メッセージ編集済み 編集者: 夏姫☆ 編集日時 2004-01-27 18:54 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-27 19:59
さっきからチョンボばかりですみません。
こんなことしていました。

page_loadメソッドで、
Dim script As New Text.StringBuilder
With script
.Append("<script language=""javascript"">" & vbCrLf)
.Append("<!--" & vbCrLf)
.Append("function btnUpdate_Click() {" & vbCrLf)
.Append("if (typeof(Page_ClientValidate) == 'function') {" & vbCrLf)
.Append(ConvertJScriptString(UpdateValidatorList))
.Append("Page_ClientValidate();" & vbCrLf)
.Append("}" & vbCrLf)
.Append("ret = confirm('更新内容を確定します。よろしいですか。');" & vbCrLf)
.Append("return ret;" & vbCrLf)
.Append("}" & vbCrLf)
End With
' スクリプト登録して、
btnUpdate.Attributes.Add("onclick", "return btnUpdate_Click();")


これ以前に「このボタンではこの検証コントロールを有効にする」という検証コントロールを、
UpdateValidatorList.Add(String.Format("{0}.enabled = true;", Me.vld.ClientID))
というようなコードで集めておいて、
ConvertJScriptString(UpdateValidatorList)で、行ごとに改行して吐き出しています。

ん〜?でも、基本的に同じような?Page_ClientValidate()から、true/falseが返ってくるので、それを返してやる必要があるかも?でも、なんでうちは期待通りに動いている?

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