Hello I am new to using the Gridview and I have a question about something I am trying to do with the event handlers. OnRowCreated I have this event handler which checks a box if a field is present in my query which is binded to the GridView.

Code:
  protected void dgFooterSponsors_RowCreated(object sender, GridViewRowEventArgs e)
    {  
        if (e.Row.RowType.ToString() == "DataRow")
        {
            //Check The Box if a Site Footer Sponsor
            DataRowView drv = (DataRowView)e.Row.DataItem;
            CheckBox chk = (CheckBox)e.Row.FindControl("chkFooterSponsor");

            //Do not display None
            if (drv["Name"].ToString() == "None")
            {
                e.Row.Visible = false;
            }

            //Check my box only if the field contains data
            if (drv["SiteFooterSponsor_ID"].ToString().Trim() == "")
            {
                chk.Checked = false;
            }
            else
            {
                chk.Checked = true;
            }
        }

    }
Everything loads fine the first time. The control chkFooterSponsor is a checkbox that is found in a template column of my GridView. When I check or uncheck this box I want to handle this action, specifically insert or delete a record from a lookup table. However...

When I check the box the RowCreated event is triggered and it says that e.Row.DataItem; is null the second time around. How do I avoid this? Does the data need to be bound again on postbacks?

Also when I check the box I have this event handler to write my new code:

Code:
 protected void chkFooterSponsor_CheckedChanged(object sender, EventArgs e)
    {
       
    }
From this event how can I get information about which data row was checked. If I try to access dgFooterSponsors.SelectedIndex or dgFooterSponsors.SelectedDataKey I get null values. Essentially I want to make the changes on a single click of the check box so users do not have to perform several clicks to update a record.

Thanks