6

asp.net アプリケーションを開発していますが、コード ビハインドで確認ダイアログ ボックスを呼び出す必要があります。その後、ユーザーのクリックを取得する必要があります (ユーザーが [OK] または [キャンセル] をクリックした場合)。

彼がダイアログの [OK] ボタンをクリックした場合、ダイアログを呼び出す前に停止した場所からコードを実行し続ける必要があります。

この問題を解決するために、aspx にタイプ ボタンの入力を入力し、そのスタイルを visibility:hide に設定することを考えました。したがって、ユーザーが [OK] ボタンをクリックすると、プログラムはこの非表示のボタンを呼び出し、停止したジョブを続行するメソッドを呼び出します。

コードを投稿します。役立つと思います。

以下のコードは私のコードビハインドにあり、確認ダイアログを呼び出します。

System.Web.UI.
    ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage + "')){document.getElementById(\'<%=btnSave.ClientID%>\').click();}", true); 

以下のコードは私のaspxにあります。これは「非表示」ボタンです。

<input style="visibility:hidden;" id="btnSave" runat="server" onclick="btnSave_Click"/>

なぜ機能しないのかわかりません。確認ダイアログ ボックスの [OK] ボタンをクリックした後に受け取るエラーは次のとおりです。

私はブラジル出身なので、エラーはポルトガル語で、英語に翻訳すると次のようになります。

「Microsoft JScript で実行時エラーが発生しました 'document.getElementByID(...)' は null またはオブジェクトではありません」

ページの HTML コードを確認すると、ボタンがないことに気付きました。

UpdatePanel を使用しているためかもしれませんが、それを削除すると (テストのためだけに Update Panel を使用する必要があります)、同じエラーが表示され、今回はボタンがページの html コードにありました。

4

3 に答える 3

1

暗闇での一突き。

コードビハインドで設定しましたbtnSave.visible = false;か? その場合、これにより、ボタンが にレンダリングされなくなりHTMLます。

また、HTML と の組み合わせではなく、ASP:Button コントロールを使用していない理由はありますrunat="server"か?

type='button'最後に、それはあなたに持っているのを助けるかもしれません<input....

アップデート

問題は、インライン タグを適用しようとしていることです document.getElementById(\'<%=btnSave.ClientID%>\')

あなたのコードに<%=btnSave.ClientID%>はまだ存在しません。

clientId が異なるため、別のサーバー コントロール内にボタンを配置した瞬間にコードが壊れます。

コードを次のように変更します。

     document.getElementById('" + btnSave.ClientID + "')

ボタンの場所に関係なく機能します。

于 2012-11-22T20:31:14.890 に答える
0

ページがブラウザに表示されたら、右クリックして「ソースを表示」と言います。HTML をチェックして、隠しボタンを見つけようとします。見つかった場合は、ステートメントでその ID を使用しますgetElementById(\'<%=btnSave.ClientID%>\')。ボタンが見つからない場合は、コード ビハインドのどこかで可視性を false に設定している可能性があります。それを削除し、上記のプロセスをもう一度実行すれば問題ありません。

于 2012-11-23T05:24:59.483 に答える
0

部品を交換して問題を解決しました

document.getElementById(\'<%=btnSave.ClientID%>\').click();

$(\"#ctl00_body_btnSave\").click();

また、input 要素を asp:Button に置き換えます。

私のコードが私のコードビハインドでどのようになっているのか見てみましょう:

System.Web.UI.
    ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage+ "')){$(\"#" + btnSave.ClientID + "\").click();}", true);

そして私のaspxで:

<asp:Button id="btnSave" Width="0px" Text="" runat="server" onclick="btnSave_Click"/>

ボタンを非表示にするために Widht="0px" と Text="" を使用することはお勧めしませんが、問題が発生しないため使用しました。非表示にする CssClass の使用をお勧めします。

そのため、ユーザーが操作を確認すると、btnSave_Click が呼び出されます。

すべての答えをありがとう。

于 2012-11-23T16:41:36.057 に答える