- PR -

ButtonのOnClientClickに、VBでJavaScript関数名をセットすると、表示するときにランタイムエラー発生

1
投稿者投稿内容
apo
常連さん
会議室デビュー日: 2008/11/10
投稿数: 27
投稿日時: 2009-01-22 14:45
画面のasp:Buttonの
OnClientClickに
サーバーのVBで、JavaScriptの関数名をセットしています。

DirectCast(grvw.Rows(i).Cells(0).FindControl("btnDelete"), Button).OnClientClick = "Javascript:SubmitFlag1=ConfirmFunc('Delete',9," + (i + 1).ToString() + ",'" + strMode + "');"

この場合に、画面を表示して、該当のボタンを押下したときに「ランタイムエラー」が発生します。
ですが、ボタンの押下時の、JavaScriptの処理も
サーバー側の処理もきちんとされていて、
画面もきちんと表示されます。

なぜこうなるのかアドバイスできる方いたら、お願いします。

よろしく

ボタンを押しても
レイル
常連さん
会議室デビュー日: 2008/10/14
投稿数: 37
投稿日時: 2009-01-22 19:05
ConfirmFunc関数内でどんな処理をしているか不明ですが、
エラー箇所の確認であれば、ランタイムエラー発生時に該当行が表示されるので、
右クリックのソースの表示で該当箇所を確認してみては如何でしょうか。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2009-01-22 21:02
デバッグしましょう。
http://msdn.microsoft.com/ja-jp/library/k2h50zzs(VS.80).aspx
apo
常連さん
会議室デビュー日: 2008/11/10
投稿数: 27
投稿日時: 2009-01-23 01:12
スクリプトのデバッグはできるようにIEの詳細設定タブからしていますが、最初はデバッグしますかと聞かれて、OKボタンを押してもデバッグモードになかなかなりません。
それで、スクリプトの記述をaspx から消したりして、
※でも、サーバー側で
DirectCast(..., Button).Onclientclick = "JavaScript:return ConfirmFunc(...)"

の処理はそのまま残して、実行すると、ようやくデバッグができました。
それで確認できたのは、上記でセットしているJavaScriptの関数名の行で
デバッグモードの画面でHTML出力が中断しているのが確認できました。

上記のDirectCaseでの、OnClicentClickイベントへのJavaScriptの関数名の設定をいったん消して、実行してみると、このランタイムエラーは全く起きません。
ですので、何らかの理由でこのOnClientClickに設定したJavaScriptの名前の行の出力中にエラーになると思います。
でも、その解決の仕方がわかりません。

ちなみに、このJavaScriptは、GridViewの Templateのタグの中にある
<asp:Button タグの OnClientClickイベントに設定しています。

何故Server側でこのボタンにJavaScriptの関数名をセットしたいかと云うと
GridViewの行ごとに、編集中、読み取りモード、新規の行の挿入された状態
などを hiddenテキストボックスに格納していて、そのモードを
Server側からJavaScriptの関数の引数にセットした文字列をOnClientClickに
セットしたいからです。

もし、JavaScript側で、GridViewのボタンを押下したときに、どの行のボタンが
押されたかを判定して、その行の番号を取得できれば
その行にあるhiddenテキストボックスのモード値も取得できて
それによって、確認メッセージが出せるのですが・・・

何か訳にたつ方法があれば教えていただけないでしょうか。
よろしくお願いします。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2009-01-23 01:27
ヒントだけ。

tr.rowIndex
td.cellIndex


apo
常連さん
会議室デビュー日: 2008/11/10
投稿数: 27
投稿日時: 2009-01-23 10:43
サーバーの処理で、
JavaScript名の後の引数が未設定だったために、画面で
このJavaScript関数名の引数を出力するときに、引数がないためにランタイムエラーが起きていました。

皆さんおさがわせしました。
でもいろいろ相談に乗ってくださってありがとうございます。
1

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