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 });
        }
    }