protected void Item_Command(object sender, CommandEventArgs e) { int index; switch (e.CommandName) { case "edit": EditItemIndex = Convert.ToInt32(e.CommandArgument); EditAddress?.Invoke(this, new EditAddressEventArgs() { ItemIndex = EditItemIndex, AddressID = GetAddressID(EditItemIndex) }); break; case "cancel": EditItemIndex = -1; EditAddress?.Invoke(this, new EditAddressEventArgs() { ItemIndex = EditItemIndex, AddressID = 0 }); break; case "update": var item = GetUpdateItem(); index = EditItemIndex; EditItemIndex = -1; UpdateAddress?.Invoke(this, new UpdateAddressEventArgs() { ItemIndex = index, Item = item }); break; case "delete": index = Convert.ToInt32(e.CommandArgument); EditItemIndex = -1; DeleteAddress?.Invoke(this, new EditAddressEventArgs() { ItemIndex = index, AddressID = GetAddressID(index) }); break; } }