Ah friend! You are what they refer to as the "enlightened one". It was indeed a naming error as both my button and update panel were inside a control that inherited from a master page. I feel like I'm closer, but not quite there yet. I don't know how to give the button's clientID on the front end, so I just attached the triggers on the backend on pageload. Here's the code.
if (!Page.IsPostBack)
{
AsyncPostBackTrigger triggerBtn = new AsyncPostBackTrigger();
triggerBtn.ControlID = btn.ID;
triggerBtn.EventName = "Click";
pnlPlanGrid.Triggers.Add(triggerBtn);
}
Now oddly enough, I still have the same issue. I tried attaching triggerBtn.ControlID to the btn.ClientID, but it didn't work properly for some strange reason. Am I missing anything else?