Antonio Esposito

è come mischiare la lana con la pecora

getPostBackControl

  • Comments 2

Ciao a tutti

In molti scenari di sviluppo ASP.NET capita di usare un controllo come gridview o listview in cui mettere dei template con dentro dei LinkButton:

<asp:LinkButton runat="server" ID="link1" Text="Clickme" PostBackUrl="~/Default2.aspx" />

Il post back viene invocato ovviamente sulla pagina di arrivo, senza però sapere quale dei “link1” generati per ogni riga della griglia sia davvero quello giusto. Come fare? Niente di più semplice ;)

Control postBackControl = PreviousPage.FindControl(Request.Form.Get("__EVENTTARGET")); c#

dim postBackControl = PreviousPage.FindControl(Request.Form.Get("__EVENTTARGET")) VB

unico inconveniente: i pulsanti non funzionano perché non usano l’eventtarget, ma poiché in Request c’è eventualmente il solo pulsante che ha fatto Postback, allora basta cercarlo per nome. Quindi potremmo fare un metodino così:

Control getPostBackControl() 
{ 
    string eventTarget = Request.Form.Get("__EVENTTARGET"); 
    if (!string.IsNullOrEmpty(eventTarget)) 
        return PreviousPage.FindControl(eventTarget); 
    else 
    { 
        foreach (string name in Request.Params) 
        { 
            Control c = PreviousPage.FindControl(name); 
            if (c is Button) 
                return c; 
        } 
        return null; 
    } 
}

Buon divertimento ;)

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • Post
Page 1 of 1 (2 items)