Here I have created sample that will help you out.
HTML
<div>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false" OnRowDataBound="RowDataBound">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Class" HeaderText="Class" SortExpression="Class" />
<asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnCheck" Text="Check" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnView" Text="View" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
Code
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Class", typeof(string));
dt.Columns.Add("Status", typeof(string));
dt.Rows.Add(1, "imran", "5", "check");
dt.Rows.Add(2, "ali", "8", "peending");
dt.Rows.Add(3, "farooq", "7", "check");
GridView2.DataSource = dt;
GridView2.DataBind();
}
}
protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string status = e.Row.Cells[3].Text;
if (status == "check")
{
((Button)e.Row.FindControl("btnCheck")).Visible = false;
}
}
}
Screenshot
