ASP.NET で特定のボタンがクリックされたかどうかを確認するにはどうすればよいですか?
に対して何らかの操作を実行する必要があると思いますPage_Load
。Button_Click
これは、見つけるためにイベントに入るべきではありません。クライアント側でクリックされた場所またはクリックされていない場所を見つけて移動する方法はありますPage_Load
か?
背景:基本的 __EVENTTARGET
に と__EVENTARGUMENT
, これらの 2 つの非表示コントロールは、いずれかの Web コントロールに対して autopostback 属性が true に設定されている場合に、HTML ソースに追加されます。
非__EVENTTARGET
表示の変数は、フレームワークがそのコントロールのサーバー側イベントを起動できるように、どのコントロールが実際にサーバー側イベントを起動するかをサーバーに伝えます。
この__ EVENTARGUMENT
変数は、アプリケーションで必要な場合に追加のイベント情報を提供するために使用され、サーバーでアクセスできます。
したがって、次を使用して、ポストバックを引き起こすコントロールを簡単に取得できます。Request.Params.Get("__EVENTTARGET");
問題:
メソッド: 、 、 などではRequest.Params.Get("__EVENTTARGET");
機能しますが、やなどのボタン コントロールでは機能しません。CheckBoxes
DropDownLists
LinkButtons
Buttons
ImageButtons
Button
コントロールとコントロールは関数ImageButton
を呼び出しません__doPostBack
。このため、_EVENTTARGET
は常に空になります。ただし、他のコントロールは JavaScript 関数 を使用し__doPostBack
てポストバックをトリガーします。
そこで、以下のように何かをすることをお勧めします。OnClientClick
ボタンにプロパティを追加します。また、マークアップで hiddenField を定義します。その値には、ポストバックを引き起こす実際のボタンが含まれます。
<asp:Button ID="Button1" runat="server" Text="Button"
OnClientClick = "SetSource(this.id)" />
<asp:ImageButton ID="ImageButton1" runat="server"
OnClientClick = "SetSource(this.id)" />
<asp:HiddenField ID="hidSourceID" runat="server" />
のOnClientClick
プロパティでJavaScript 関数Button
をImageButton
呼び出すSetSource
<script type = "text/javascript">
function SetSource(SourceID)
{
var hidSourceID =
document.getElementById("<%=hidSourceID.ClientID%>");
hidSourceID.value = SourceID;
}
</script>
Page_Load
これ以降、どのコントロールがポストバックを引き起こしたかについて、非常に簡単に確認できます。
if (IsPostBack)
{
string CtrlName;
CtrlName=hidSourceID.Value;
}
ボタンの UniqueID は Request.Form["__EVENTTARGET"] になります。
非表示フィールドを使用してみることができます。OnclientClick イベントでクライアント側イベントを作成し、hidden フィールドの値を設定してみてください。条件によって true または false になる場合があります。また、ページの読み込み時に Hiidden フィールドの値を確認できます。
function click()
{
// set the hidden field here
}
ページの読み込み時に、値を確認するだけです。
if(HiddenFieldName.Value=="true")
{
//perform the action
}