8

ASP.NET で特定のボタンがクリックされたかどうかを確認するにはどうすればよいですか?

に対して何らかの操作を実行する必要があると思いますPage_LoadButton_Clickこれは、見つけるためにイベントに入るべきではありません。クライアント側でクリックされた場所またはクリックされていない場所を見つけて移動する方法はありますPage_Loadか?

4

5 に答える 5

16

背景:基本的 __EVENTTARGETに と__EVENTARGUMENT, これらの 2 つの非表示コントロールは、いずれかの Web コントロールに対して autopostback 属性が true に設定されている場合に、HTML ソースに追加されます。

__EVENTTARGET表示の変数は、フレームワークがそのコントロールのサーバー側イベントを起動できるように、どのコントロールが実際にサーバー側イベントを起動するかをサーバーに伝えます。

この__ EVENTARGUMENT変数は、アプリケーションで必要な場合に追加のイベント情報を提供するために使用され、サーバーでアクセスできます。

したがって、次を使用して、ポストバックを引き起こすコントロールを簡単に取得できます。Request.Params.Get("__EVENTTARGET");

問題:

メソッド: 、 、 などではRequest.Params.Get("__EVENTTARGET");機能しますが、やなどのボタン コントロールでは機能しません。CheckBoxesDropDownListsLinkButtonsButtonsImageButtons

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 関数ButtonImageButton呼び出す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;
}
于 2013-09-15T11:26:49.207 に答える
0

ボタンの UniqueID は Request.Form["__EVENTTARGET"] になります。

この質問は、ASP.NET : page_load でクリック イベントを確認するで既に回答されています。

于 2013-09-14T06:20:19.623 に答える
0

非表示フィールドを使用してみることができます。OnclientClick イベントでクライアント側イベントを作成し、hidden フィールドの値を設定してみてください。条件によって true または false になる場合があります。また、ページの読み込み時に Hiidden フィールドの値を確認できます。

function click()
{
// set the hidden field here
}

ページの読み込み時に、値を確認するだけです。

if(HiddenFieldName.Value=="true")
{
//perform the action
}
于 2013-09-15T12:06:40.283 に答える