コードビハインドからページを作成しています。ボタンを追加し、その属性を次のように設定します。
var Button1 = new Button();
Button1.Text = "Purge Course Comments";
Button1.Attributes.Add("OnClientClick", "javascript: Purge();");
pageButtons.Controls.Add(Button1);
ボタンは「pageButtons」という div に追加されています。プログラムをテストすると、ボタンは正常に画面に表示されますが、クリックしてもブラウザがポストバックする以外は何も起こりません。
このページはコード ビハインドから構築する必要があるため、次のようにボタンをページに直接追加することはできません (これでうまくいきます)。
<asp:Button ID="Button1" runat="server" Text="Close Window" OnClientClick="Purge;"/>
基本的に、コード ビハインドから関数を呼び出せるようにする必要がありますが、うまくいきません。誰かが私が間違っていることを教えてもらえますか?
編集:私は Stackoverflow で同様の質問を見てきましたが、この状況で私にとって有効な回答を持つ単一の質問が見つかりません。
編集:わかりやすくするために、ページで定義したパージ関数を次に示します。
function PurgeCourse() {
strCourseId = getQueryString("Id");
if (strCourseId == "") {
strCourseId = getQueryString("CourseId");
}
window.open("Purge.aspx?id=" + strCourseId);
parent.window.close();
}
上記の例のように、手動でボタンをページに追加するだけで機能します。ただし、コードビハインドから呼び出すことはできないようです。
編集:私は以下からの提案を試みましたが、今私のコードは次のようになります:
var Button1 = new Button();
Button1.Text = "Purge Course Comments";
Button1.OnClientClick = "javascript: Purge();";
pageButtons.Controls.Add(Button1);
残念ながら、これもうまくいきませんでした。ただし、手動でボタンをページに追加し、OnClientClick 属性を設定して Purge() を呼び出すと、関数が機能することを繰り返します。コードビハインドから関数にアクセスできないようですが、理由がわからないのでイライラします。これは、関数と div とコード ビハインドのみを含む小さなテスト ページです。問題がどこにあるのかわかりません。
編集:私は別のことを試しました.それがうまくいくかどうかを確認するためだけです. 私は次のことをしました:
Button1.OnClientClick = "javascript: parent.window.close();";
そしてこれは機能したので、ボタンは少なくともインライン JavaScript コードを使用できます。コードビハインドからページにある私の関数を「見ている」だけではありません。