ASP.NET開発時に困ったPostback時のイベントの発生元の取得について。
多くのサイトには、下記のような形で取得できるとあるのですが、
どうも「AutoPostBack=true」じゃないと結果が""になる。う~ん。
string ctrlname = Page.Request.Params.Get("__EVENTTARGET");
そこで見つけたのが下記サイト。
http://aspadvice.com/blogs/joteke/archive/2004/08/05/2288.aspx
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If DidControlCausePostBack(Button1.UniqueID) Then
Response.Write("Button1")
End If
If DidControlCausePostBack(LinkButton1.UniqueID) Then
Response.Write("LinkButton1")
End If
If DidControlCausePostBack(ImageButton1.UniqueID) Then
Response.Write("ImageButton1")
End If
End Sub
private bool DidControlCausePostBack(string uniqueID)
{
return (!(Request.Form[uniqueID] == null)) || (!(Request.Form["__EVENTTARGET"] == null) && Request.Form["__EVENTTARGET"].Equals(uniqueID)) || ((!(Request.Form[uniqueID + ".x"] == null)) && (!(Request.Form[uniqueID + ".y"] == null)));
}
サイトの記載はVB.NETですが、読み替えてやってください。
demicadeはめんどくさがりなので・・・。
これで解決!