Подход, который вам нужно сделать, - сделать этот желаемый столбец GridView полем шаблона. При использовании полей шаблона вы можете вставить любые элементы управления asp.net в каждый основной раздел элемента управления gridview (заголовок, элемент, нижний колонтитул и т. Д.). Я не проверял это, но в принципе это выглядит так:
<asp:GridView ID="Gridview1" runat="server">
<Columns>
<asp:BoundField DataField="yourDbColumnName" HeaderText="id" />
<asp:BoundField DataField="yourDbColumnName" HeaderText="name" />
<asp:TemplateField>
<HeaderTemplate>
<asp:Button runat="server" ID="btnFamily" CommandName="FamilyClicked" />
</HeaderTemplate>
<ItemTemplate>
<asp:Literal runat="server" ID="litFamily" Text='<%# EVAL("YourDbColumnValue") %>'></asp:Literal>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Чтобы «захватить» событие нажатия вашей кнопки и что-то с ним сделать, вам нужно использовать событие RowCommand GridView (вот отправная точка - опять не проверено):
Protected Sub Gridview1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles Gridview1.RowCommand
If e.CommandName = "FamilyClicked" Then
' they clicked by grid view header's asp:button control...
Response.Write("TEST")
End If
End Sub
Волшебство здесь заключается в назначении свойства CommandName вашей кнопки (в этом случае я установил его на «FamilyClicked», но это может быть все, что вы захотите).
Вот еще несколько основ технологии поля шаблона, которую использует GridView - текст ссылки
Надеюсь, это поможет.