投稿時にどのボタンがクリックされたかを知りたい。どのボタンがクリックされたかを知る方法
ユーザーがボタンをクリックすると、ポストバックになり、コントロールのClickイベントに移動します。
私がしたいのは、最初の段階でどのボタンがクリックされたかを調べることです。ポストバック段階中。
これを達成する方法はありますか?
ps。 C#コードのみ。それはasp.netの質問
投稿時にどのボタンがクリックされたかを知りたい。どのボタンがクリックされたかを知る方法
ユーザーがボタンをクリックすると、ポストバックになり、コントロールのClickイベントに移動します。
私がしたいのは、最初の段階でどのボタンがクリックされたかを調べることです。ポストバック段階中。
これを達成する方法はありますか?
ps。 C#コードのみ。それはasp.netの質問
とForm
のコレクションは、このようなコード(恥知らずに盗まれたhere)でチェックできます。このようなPage_Load
で
public static System.Web.UI.Control GetPostBackControl(System.Web.UI.Page page)
{
Control control = null;
string ctrlname = page.Request.Params["__EVENTTARGET"];
if (ctrlname != null && ctrlname != String.Empty)
{
control = page.FindControl(ctrlname);
}
// if __EVENTTARGET is null, the control is a button type and we need to
// iterate over the form collection to find it
else
{
string ctrlStr = String.Empty;
Control c = null;
foreach (string ctl in page.Request.Form)
{
// handle ImageButton controls ...
if (ctl.EndsWith(".x") || ctl.EndsWith(".y"))
{
ctrlStr = ctl.Substring(0, ctl.Length - 2);
c = page.FindControl(ctrlStr);
}
else
{
c = page.FindControl(ctl);
}
if (c is System.Web.UI.WebControls.Button ||
c is System.Web.UI.WebControls.ImageButton)
{
control = c;
break;
}
}
}
return control;
}
コールそれを:
Control controlThatCausedPostBack = GetPostBackControl(this);
あなたのウェブページ上でプライベート変数を使用してください。 OnClick
ハンドラでは、その変数の値をsender
引数に設定します(ボタンまたはコントロールに型キャストする必要があります)。
Matrix001、ちょうどあなたの用語を明確にするために、ユーザーがWebブラウザ上でアクションを行うときにポストバックがある(または自動化されたクライアント側のアクションが発生します) HTTP POST要求がサーバーに返されます。 「ポストバック段階」と呼ばれるものは、ポストバックイベント処理(ボタンクリックイベントなど)の前に発生するページライフサイクルの最初の数段階です。あなたが興味を持っているのは、 'Page.Load'のような以前のイベントを処理している間、今後のポストバックイベントに関する情報を得ることです。 – pseudocoder
はい、私が望むのは、ユーザーが情報を要求するとすぐに、つまりボタンをクリックすると、起動されたコントロールのイベントのタイプ(または単にコントロールのID)を取得することです。どのボタンがクリックされたのかを知りたいのですが、それはボタンAまたはBだったのですが、私はPage.Loadイベントでそれを知りたいです。 – Matrix001