2010-10-28 20 views
13

Estoy construyendo un LinkButton desde mi código subyacente, y necesito asignar el onclick a un método, y pasar un parámetro con él también. Tengo esto hasta ahora:Configuración del evento OnClick de LinkButton al método en codebehind

LinkButton lnkdel = new LinkButton(); 
lnkdel.Text = "Delete"; 

El método Quiero pasarlo al siguiente aspecto:

protected void delline(string id) 
     { 

     } 

Respuesta

31

Bueno, no se puede pasar a eso método, debe asignar el delegado de evento de clic a un método capaz de manejarlo.

De esta manera:

public void DynamicClick(object sender, EventArgs e) { 
    // do something 
} 

asignar el evento de clic como cualquier evento:

lnkdel.Click += new EventHandler(DynamicClick); 

Si desea pasar un argumento, utilice CommandArgument, y se necesita un delegado diferente :

void DynamicCommand(Object sender, CommandEventArgs e) 
     { 
     Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument; 
     } 

Y luego:

lnkDel.Command += new CommandEventHandler(DynamicCommand) 
lnkDel.CommandArgument = 1234; 

Por cierto, si estás en> = C# 3, también puede utilizar la frescura de métodos anónimos:

lnkDel.Command += (s, e) => { 
    Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument; 
}; 
+0

Gracias amigo, estoy tratando de utilizar el segundo método publicado como el propósito es que la publicación pase una identificación para su eliminación. .OnCommand no apareció en la lista intellisense, y cuando intento escribirlo de todos modos, ¿me dice que el LinkButton es inaccesible debido a su nivel de protección? – Chris

+1

@Chris: sí, se olvidó de ese 'error/función' con el botón de enlace. intente esto: 'lnkDel.Command + = new CommandEventHandler (DynamicCommand)' o simplemente 'lnkDel.Command + = DynamicCommand'. – RPM1984

+0

Gracias amigo, compila, pero parece que nunca entra en el Comando. ¿Me falta algo? También probé el método C# 3, que se compila, pero nunca más entra en ese método. – Chris

1

El prototipo de función para este evento es:

protected void lnkdel_OnClick(object _sender, EventArgs _args) 
{ 
    LinkButton src = (LinkButton)_sender; 
    // do something here... 
} 

asignarlo con :

LinkButton lnkdel = new LinkButton(); 
lnkdel.Text = "Delete"; 
lnkdel.OnClick += new EventHandler(lnkdel_OnClick); 
Cuestiones relacionadas