- - PR -
ButtonのOnClientClickに、VBでJavaScript関数名をセットすると、表示するときにランタイムエラー発生
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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の処理も サーバー側の処理もきちんとされていて、 画面もきちんと表示されます。 なぜこうなるのかアドバイスできる方いたら、お願いします。 よろしく ボタンを押しても |
|
投稿日時: 2009-01-22 19:05
ConfirmFunc関数内でどんな処理をしているか不明ですが、
エラー箇所の確認であれば、ランタイムエラー発生時に該当行が表示されるので、 右クリックのソースの表示で該当箇所を確認してみては如何でしょうか。 |
|
投稿日時: 2009-01-22 21:02
デバッグしましょう。
http://msdn.microsoft.com/ja-jp/library/k2h50zzs(VS.80).aspx |
|
投稿日時: 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テキストボックスのモード値も取得できて それによって、確認メッセージが出せるのですが・・・ 何か訳にたつ方法があれば教えていただけないでしょうか。 よろしくお願いします。 |
|
投稿日時: 2009-01-23 01:27
ヒントだけ。
tr.rowIndex td.cellIndex |
|
投稿日時: 2009-01-23 10:43
サーバーの処理で、
JavaScript名の後の引数が未設定だったために、画面で このJavaScript関数名の引数を出力するときに、引数がないためにランタイムエラーが起きていました。 皆さんおさがわせしました。 でもいろいろ相談に乗ってくださってありがとうございます。 |
1