If you want to get the names of columns which are set to visible false. Then you can make your GridView like this
Use TemplateField and set it to visible false.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="FULLNAME" HeaderText="NAME" />
<asp:TemplateField HeaderText="EVALUATION" Visible="false">
<ItemTemplate>
<asp:Label ID="lblEvalution" runat="server" Text='<%# Eval("EVALUATION") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="BRS" Visible="false">
<ItemTemplate>
<asp:Label ID="lblBRS" runat="server" Text='<%# Eval("BRS") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="SD" Visible="false">
<ItemTemplate>
<asp:Label ID="lblSD" runat="server" Text='<%# Eval("SD") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnGetRows" runat="server" OnClick="GetRows" Text="GetColumns" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
<PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" />
<RowStyle BackColor="White" ForeColor="#330099" HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:GridView>
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(3) {New DataColumn("FullName", GetType(String)), New DataColumn("EVALUATION", GetType(String)), New DataColumn("BRS", GetType(String)), New DataColumn("SD", GetType(String))})
dt.Rows.Add("Shaikh Azim", "EVALUATION1", "BRS1", "SD1")
dt.Rows.Add("Kalpesh Pagdhare", "EVALUATION2", "BRS2", "SD2")
dt.Rows.Add("Sajid dhukka", "EVALUATION3", "BRS3", "SD3")
Me.GridView1.DataSource = dt
Me.GridView1.DataBind()
End If
End Sub
Protected Sub GetRows(sender As Object, e As EventArgs)
Dim row As GridViewRow = TryCast(TryCast(sender, Button).NamingContainer, GridViewRow)
Dim lblEvalution As String = TryCast(row.Cells(1).FindControl("lblEvalution"), Label).Text
Dim lblBRS As String = TryCast(row.Cells(1).FindControl("lblBRS"), Label).Text
Dim lblSD As String = TryCast(row.Cells(1).FindControl("lblSD"), Label).Text
End Sub
Thank You.