The following code snippet will to hide the value associated with gridview column.
<asp:GridView ID="gvData" runat="server"
AutoGenerateColumns="False" EmptyDataText="There are no data records to display."
CellPadding="4" ForeColor="#333333" GridLines="None" Width="100%" Height="272px" Style="font-family: Consolas">
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<Columns>
<asp:TemplateField HeaderText="Data 1">
<ItemTemplate>
<asp:Label ID="lblId" runat="server" Text='<%# Bind("id") %>' Visible="false"></asp:Label>
<asp:Label ID="lblData1" runat="server" Text='<%# Bind("data1") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Data 2">
<ItemTemplate>
<asp:Label ID="lblData2" runat="server" Text='<%# Bind("data2") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
The id column is associated with non visible label. So you can access the data that is binded with this label.