dataSet.Tables[0].Rows[row]["LastName"] finns helt enkelt inte eller så är det din findcontrol som inte fungerar... du kan inte tilldela ett värde på något som inte finns.
Sen krånglar du till det onödigt mycket:
Istället för:
TextBox EditText = null;
EditText = (TextBox)e.Item.FindControl("txtResponsible");
dataSet.Tables[0].Rows[row]["Responsible"] = EditText.Text;
Gör så här:
dataSet.Tables[0].Rows[row]["Responsible"] = ((TextBox)e.Item.FindControl("txtResponsible")).Text;
Ja, det var inte en lösning på ditt problem alltså, bara ett tips. Problemet är fortfarande att du försöker tilldela ett värde på något som inte finns.
Kan inte säga exakt vad som är fel eftersom jag inte vet hur ditt dataset ser ut men vi får väl utgå från att du fyller ditt dataset med data korrekt eftersom du lyckas uppdatera de två första. Finns "txtLastName" eller har du skrivit fel id? Är du säker på att den här platsen finns i ditt dataset, dataSet.Tables[0].Rows[row]["LastName"]? Felet beror alltså på att du försöker tilldela något som inte finns ett värde.
Japp, där har du felet ser jag ju nu (måste varit blind förut). Du måste ange vilken kontroll du ska köra din findcontrol på och på vilken rad. Prova nåt i den här stilen så ska det nog gå bättre: