In questo esempio creo una gridview e aggiungo una cella accanto ad ogni riga che viene creata. Il contenuto della cella var1 viene definito in un altro posto (nel page_load).
Per semplicità dichiaro var1 a livello di classe cosi è in scope nell'handler dell'evento. Ma potrebbe essere dichiarato e valorizzato in qualsiasi altro modo. Quello che conta è capire che la responsabilità di valorizzare var1 è della classe WebForm1 e non della GridView. Anzi, Il motivo per cui la gridview espone gli eventi è proprio perche "vuole disinteressarsi" di cosa fanno i subscriber allo scatenarsi degli stessi. Lei avvisa e basta.
codice:
public partial class WebForm1 : System.Web.UI.Page
{
private string[] dati = { "uno", "due", "tre" };
private string var1;
protected void Page_Load(object sender, EventArgs e)
{
var1 = "ciao";
GridView gw = new GridView();
gw.DataSource = dati;
gw.DataBind();
gw.RowCreated += OnCreated;
this.Form.Controls.Add(gw);
}
public void OnCreated(object sender, GridViewRowEventArgs e)
{
GridViewRow row = e.Row;
if (row.RowIndex >= 0)
row.Cells.Add(new TableCell { Text = var1 });
}
}