私が抱えている問題が以前にSOで尋ねられ、議論されたという事実をよく知っていますが、私はそれらすべてを数え切れないほど読みましたが、実際に私の問題を解決するのに役立つものはありませんでした. Visual Studio、ASP.NET、および C# を使用しています。
私が正確にやりたいことは次のとおりです。内部にラベルを含むJQueryダイアログがあります。ボタンもついています。そのボタンが押されたら、ボタンのクリック イベント内にジャンプして、JQuery ダイアログ内のラベルのテキストを設定したいと考えています。次に、ダイアログを開き、ボタンのクリック ハンドラーに設定されたばかりのテキストを含むラベルを表示します。
これが私のJQueryダイアログにあるはずのコンテンツです(この質問のためにコードを簡略化したことに注意してください):
<div id="dialog" title="Basic dialog">
<asp:Label ID="Label1" runat="server" ></asp:Label>
</div>
私のページには、onClick イベントを持つ ASP.NET ボタンがあります。コード ビハインドでは、ボタンのクリック イベント内で、Label1 のテキストを設定しています。
これは私のボタンです:
<asp:LinkButton ID="testButton" runat="server" onClick="button_Click" text="click me"/>
クリック ハンドラーの背後にあるコードは次のとおりです。
protected void button_Click(object sender, EventArgs e)
{
Label1.Text = "Hello";
}
これは実際には機能しますが、私が望むようには機能しません。
私の問題: 何らかの理由で、ラベルのテキストは、ボタンを 2 回押したときにのみ設定されます。つまり、ボタンを初めてクリックすると、ダイアログが開き、何も表示されず、ダイアログが消えてページがポストバックされます。2 回目にボタンを押すと、ラベルにテキストが設定されていることがわかりますが、ダイアログがすぐに消えてページがポストバックされます。
ボタンに次を追加しようとしました: OnClientClick="return false;" これを行うと、ポストバックの問題はなくなりましたが、ボタンのクリック イベントが発生しません。
また、スクリプトに以下を追加しようとしました: event.preventDefault(); これにより、return false; と同じ問題が発生します。ページはポストバックせず、単にボタンのクリック イベントにジャンプしません。
ここに私のダイアログスクリプトがあります:
<script>
$(function () {
$('#dialog').parent().appendTo($("form:first"))
$("#dialog").dialog(
{
autoOpen: false,
buttons: {
"Ok": function () {
$(this).dialog("close");
}
}
}
);
$("#testButton")
.button()
.click(function openConfirmDialog() {
$("#dialog").dialog("open")
});
});
</script>
基本的に、ボタンをクリックしてラベルのテキストを設定し、ダイアログを開き、ユーザーが閉じるまでそのダイアログを開いたままにしておくだけです。
何かが欠けているかもしれませんが、やりたいことと同じくらい簡単なことをするのがどれほど難しいかを知って驚いています.
よろしく、ジェーン