Alright, thanks to your help I'm getting very very close 
Basically what I did was create four class fields
private GridView gvPersons;
private CslaDataSource odsPersons;
private Panel pPersons;
private Label lTesting;
And then added the following code in my OnInit
private void InitializeControls()
{
pPersons = new Panel();
odsPersons = new CslaDataSource();
odsPersons.ID = "odsPersons_" + UniqueID;
odsPersons.TypeAssemblyName = "PersonSearch";
odsPersons.TypeName = "PersonSearch.PersonList";
odsPersons.TypeSupportsPaging = true;
odsPersons.TypeSupportsSorting = true;
odsPersons.SelectObject += new EventHandler<SelectObjectArgs>(odsPersons_OnSelectObject);
pPersons.Controls.Add(odsPersons);
gvPersons = new GridView();
gvPersons.ID = "gvPersons_" + UniqueID;
gvPersons.DataSourceID = odsPersons.ID;
gvPersons.AutoGenerateColumns = true;
gvPersons.AllowPaging = true;
gvPersons.PageSize = 10;
gvPersons.EmptyDataText = "Boo, no results!";
gvPersons.GridLines = GridLines.Both;
pPersons.Controls.Add(gvPersons);
lTesting = new Label();
lTesting.Text = "<strong><span style='color:White;'>Testing Grid View #12</span></strong><br /><br />";
pPersons.Controls.Add(lTesting);
this.Controls.Add(pPersons);
gvPersons.DataBind();
}
Finally I removed my old render code and replaced it with the following
protected override void RenderContents(HtmlTextWriter output)
{
pPersons.RenderControl(output);
}
Two things.. One is that I had to add my controls to the WebCotrol first doing a this.controls.add. This gave my gridview a naming container which it required to do a databind. After I did that, thanks to your suggestion of moving the content to the onInit, my grid properly displayed when I loaded the page.
The only thing I don't quite understand at this point is that when I drag my web custom control to my form editor, I will see my "Testing Grid View #12" label, but the grid will not show up in design view. The grid only displays once I actually run the webpage. Do you have any idea why this might happen, and is this normal or am I still missing something?
Thank you so much for your assistance. Your tip was very helpful
Please mark the post(s) that helped you as the answer. You get points, the poster gets points, and also the answer is then there to show anyone else how your problem was solved.