You can't. If you think about it, it doesn't make sense to try: Because the name of the event handler needs to be known at compile time, and you need it to change at run time, you would have to set up an virtually infinite list of event handlers in order to cope with whatever data comes back from your dataTable.
Instead, use the sender parameter of the event handler to decide which button was clicked:
private void btnRetrieve_Click(object sender, EventArgs e)
{
Button b = sender as Button;
if (b != null)
{
switch (b.Text)
{
case "Category 1":
...
}
}
}
Or use the Control.Tag property to put a specific value into it for processing in the handler method.