Domanda

Sono sicuro che quasi tutti i programmatori in .net hanno riscontrato problemi simili con la creazione dinamica di pulsanti ..

Scenario di esempio ..

Ho un gridview e in uno dei campi gridview ho un pulsante. Normalmente in .net usando Visual Studio puoi facilmente prendere l'evento click del pulsante, tuttavia poiché questi pulsanti sono creati dinamicamente non sono così facili da afferrare. Ero curioso di sapere quale sarebbe il metodo migliore per catturare l'evento click del pulsante.

Capisco che è possibile utilizzare dopostback; tuttavia, non sono sicuro di come implementarlo né ho provato perché ho anche letto il metodo dopostback non è molto buono da usare. Perché?

È stato utile?

Soluzione 3

Purtroppo, la risposta è stata molto più semplice di quanto avessi mai pensato ..

Non mi ero reso conto che l'evento ItemCommand fosse utilizzabile per i pulsanti creati in TemplateField.

Tutto quello che dovevo davvero fare era ..

Private Sub GridView1_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewCommandEventArgs) Handles DetailsView1.ItemCommand
    If e.CommandName = "myButton" Then
        //'myButton press event logic here
    End If
End Sub

Grazie per il vostro aiuto ragazzi .. Lo apprezzo molto. Le tue risposte saranno utili in futuro, ne sono sicuro.

Altri suggerimenti

Nel gridview, c'è un evento chiamato RowDatabound . Metti un gestore di eventi su quello:

gv.RowDataBound += new EventHandler(rowBound);

Ora all'interno di quella funzione, utilizzerai FindControl per individuare il pulsante e aggiungere un gestore:

function rowbound(Object sender, GridViewRowEventArgs e)
{
  if(e.Row.RowType == DataControlRowType.DataRow)
  {
      var b = e.Row.FindControl("btn") as Button;
      b.Click += new EventHandler(handleBtnClick);
  }
}

Durante l'evento ItemCreated di Gridview usa FindControl per ottenere un riferimento al pulsante e collegare lì il gestore eventi. vale a dire. btn.Click + = Somehandler;

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top