refer this example
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
$(function () {
$('.chkcls').change(function (a, b) {
var isChecked = a.target.checked;
var grid = document.getElementById('<%= gv.ClientID%>');
var target = $(this).attr('column-control');
var targetTH = $("th:contains('" + target + "')", grid);
var index = $('th', grid).index(targetTH);
$('tr', grid).each(function (i, row) { $('td:nth(' + index + ')', row).css("display", isChecked ? "" : "none"); });
targetTH.css("display", isChecked ? "" : "none");
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True"
SortExpression="Id" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Country" HeaderText="Country"
SortExpression="Country" />
</Columns>
</asp:GridView>
<asp:CheckBox AutoPostBack="false" Checked="true" column-control="Id" CssClass="chkcls" runat="server" ID="chkid" Text="show hide id" />
<asp:CheckBox AutoPostBack="false" Checked="true" column-control="Name" CssClass="chkcls" runat="server" ID="chkname" Text="show hide name" />
<asp:CheckBox AutoPostBack="false" Checked="true" column-control="Country" CssClass="chkcls" runat="server" ID="chkcountry" Text="show hide country" />
</form>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("Country");
dt.Rows.Add(1, "AA", "India");
dt.Rows.Add(2, "bb", "US");
dt.Rows.Add(3, "cc", "UK");
gv.DataSource = dt;
gv.DataBind();
}
}