2008-10-09 31 views
11

En C#, ¿cómo puedo verificar si se ha hecho clic en un botón de enlace en el método de carga de página?ASP.NET: compruebe si hay un evento de clic en page_load

Necesito saber si se hizo clic antes de que se dispare el evento de clic.

+0

Si el código es dependiente del evento OnClick, entonces usted puede poner ese código en particular en el OverPide OnPageRender (en lugar de en Page_Load), ya que se activará después del controlador de eventos OnClick. – snumpy

Respuesta

19
if(IsPostBack) 
{ 
    // get the target of the post-back, will be the name of the control 
    // that issued the post-back 
    string eTarget = Request.Params["__EVENTTARGET"].ToString(); 
} 
+0

¿Has probado esto? Debería tener dos barras diagonales principales: "__EVENTTARGET" –

+0

yup lo entendí yo mismo, ¡gracias! – Jared

+0

¿Alguna idea de cómo se puede utilizar esto con un Panel de actualización? No parece funcionar – Thomas

2

Compruebe el valor del parámetro de solicitud __EVENTTARGET para ver si se trata del ID del botón de enlace en cuestión.

2

El UniqueID del botón estará en Request.Form [ "__ EventTarget"]

2

Si eso no work.Try UseSubmitBehavior="false"

1

Basado en respuesta aceptada y la respuesta de este Real Steel podría ser una respuesta más completa.

Primero se debe agregar a la .aspx un botón de la siguiente manera:

<asp:Button id="btnExport" runat="server" Text="Export" UseSubmitBehavior="false"/> 

A continuación, en el método Page_Load:

if(IsPostBack){ 
    var eventTarget = Request.Params["__EVENTTARGET"] 
    // Then check for the id but keep in mind that the name could be 
    // something like ctl00$ContainerName$btnExport 
    // if the button was clicked or null so take precautions against null 
    // ... so it could be something like this 
    var buttonClicked = eventTarget.Substring(eventTarget.LastIndexOf("$") + 1).Equals("btnExport") 

} 
0

Acabo de recibir el mismo problema, habría que hacer un juicio lógico en el Método Page_Load para tratar diferentes eventos (en qué botón se hizo clic).

Me doy cuenta del brazo para obtener el como el siguiente ejemplo.

El código fuente del aspx extremo delantero (Tengo muchos botones con los ID de F2, F3, F6, F12.

<Button Style="display: none" ID="F2" runat="server" Text="F2:Cancel" OnClientClick="SeiGyo(this)" OnClick="F2_Click" /> 
    <Button Style="display: none" ID="F3" runat="server" Text="F3:Return" OnClientClick="SeiGyo(this)" OnClick="F3_Click" /> 
    <Button Style="display: none" ID="F6" runat="server" Text="F6:Run" OnClientClick="SeiGyo(this)" OnClick="F6_Click" /> 
    <Button Style="display: none" ID="F12" runat="server" Text="F12:Finish" OnClientClick="SeiGyo(this)" OnClick="F12_Click" /> 

El extremo posterior aspx.cs código fuente, lo que tengo que hacer es juzgar qué botón se ha hecho clic en Load fue provocado. parece un poco tonto, pero funciona. Espero que sea útil para algunos otros

Dictionary<string, string> dic = new Dictionary<string, string>(); 
foreach(var id in new string[]{"F2","F3","F6","F12"}) 
{ 
     foreach (var key in Request.Params.AllKeys) 
        { 
         if (key != null && key.ToString().Contains(id)) 
          dic.Add(id, Request[key.ToString()].ToString()); 
        } 
} 
Cuestiones relacionadas