You can use HeaderTemplate and add any control to it...
Just like ItemTemplate used in second solution..
read more about HeaderTemplate
Here
<asp:gridview id="GridView1"
width="250"
runat="server">
<columns>
<asp:templatefield>
<headertemplate>
<asp:ImageButton ID="btn1" runat="server" ImageUrl="img1.gif" OnClick="btn1_Click"/>
</headertemplate>
</asp:templatefield>
</columns>
</asp:gridview>