Hi donparag,
Refer the below sample.
HTML
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound">
<Columns>
<asp:TemplateField ItemStyle-Width="30px" HeaderText="CustomerID">
<ItemTemplate>
<asp:Label ID="lblCustomerID" runat="server" Text='<%# Eval("CustomerID")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="100px" HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblContactName" runat="server" Text='<%# Eval("ContactName")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtContactName" runat="server" Text='<%# Eval("ContactName")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="150px" HeaderText="Company">
<ItemTemplate>
<asp:Label ID="lblCompany" runat="server" Text='<%# Eval("CompanyName")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtCompany" runat="server" Text='<%# Eval("CompanyName")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkRemove" runat="server" CommandArgument='<%# Eval("CustomerID")%>'
OnClientClick="return confirm('Do you want to delete?')" Text="Delete"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Columns>
<AlternatingRowStyle BackColor="#C2D69B" />
</asp:GridView>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
private void BindData()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[3] { new DataColumn("CustomerID", typeof(string)),
new DataColumn("ContactName", typeof(string)),
new DataColumn("CompanyName",typeof(string)) });
dt.Rows.Add("C123", "ABC", "Company 1");
dt.Rows.Add("C456", "XYZ", "Company 2");
dt.Rows.Add("C789", "PQR", "Company 3");
dt.Rows.Add("C123", "ABC", "Company 4");
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((e.Row.FindControl("lblCustomerID") as Label).Text.ToUpper() == "C123")
{
foreach (var pb in e.Row.Cells[3].Controls.OfType<LinkButton>())
{
pb.Visible = false;
}
foreach (var pb in e.Row.Cells[4].Controls.OfType<LinkButton>())
{
pb.Visible = false;
}
}
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
BindData()
End If
End Sub
Private Sub BindData()
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(2) {New DataColumn("CustomerID", GetType(String)), New DataColumn("ContactName", GetType(String)), New DataColumn("CompanyName", GetType(String))})
dt.Rows.Add("C123", "ABC", "Company 1")
dt.Rows.Add("C456", "XYZ", "Company 2")
dt.Rows.Add("C789", "PQR", "Company 3")
dt.Rows.Add("C123", "ABC", "Company 4")
GridView1.DataSource = dt
GridView1.DataBind()
End Sub
Protected Sub OnRowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
If TryCast(e.Row.FindControl("lblCustomerID"), Label).Text.ToUpper() = "C123" Then
For Each pb As Control In e.Row.Cells(3).Controls.OfType(Of LinkButton)()
pb.Visible = False
Next
For Each pb As Control In e.Row.Cells(4).Controls.OfType(Of LinkButton)()
pb.Visible = False
Next
End If
End If
End Sub
Output
CustomerID | Name | Company | | |
C123 |
ABC |
Company 1 |
|
|
C456 |
XYZ |
Company 2 |
Delete |
Edit |
C789 |
PQR |
Company 3 |
Delete |
Edit |
C123 |
ABC |
Company 4 |