Hi Sanxion,
Instead of using BoundField to check the value and make it hidden you can use of HiddenField and based on the HiddenField do the same checking.
Refer below example.
HTML
<asp:GridView ID="gvBatches" runat="server" AutoGenerateColumns="False" DataKeyNames="BatchID"
GridLines="Both" OnRowDataBound="gvBatches_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Actual" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:HiddenField ID="hfIsActual" runat="server" Value='<%# Eval("IsActual") %>' />
<asp:Image ID="ImageActual" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.AddRange(new System.Data.DataColumn[] {
new System.Data.DataColumn("BatchID", typeof(int)),
new System.Data.DataColumn("IsActual", typeof(string)) });
dt.Rows.Add(1, "False");
dt.Rows.Add(2, "True");
dt.Rows.Add(3, "True");
dt.Rows.Add(4, "False");
gvBatches.DataSource = dt;
gvBatches.DataBind();
}
}
protected void gvBatches_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Image img = (e.Row.Cells[0].FindControl("ImageActual") as Image);
string isActual = (e.Row.Cells[0].FindControl("hfIsActual") as HiddenField).Value;
if (isActual.ToLower() == "false")
{
img.ImageUrl = "~/Images/minus.png";
}
else
{
img.ImageUrl = "~/Images/plus.png";
}
}
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim dt As System.Data.DataTable = New System.Data.DataTable()
dt.Columns.AddRange(New System.Data.DataColumn() {
New System.Data.DataColumn("BatchID", GetType(Integer)),
New System.Data.DataColumn("IsActual", GetType(String))})
dt.Rows.Add(1, "False")
dt.Rows.Add(2, "True")
dt.Rows.Add(3, "True")
dt.Rows.Add(4, "False")
gvBatches.DataSource = dt
gvBatches.DataBind()
End If
End Sub
Protected Sub gvBatches_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim img As Image = (TryCast(e.Row.Cells(0).FindControl("ImageActual"), Image))
Dim isActual As String = (TryCast(e.Row.Cells(0).FindControl("hfIsActual"), HiddenField)).Value
If isActual.ToLower() = "false" Then
img.ImageUrl = "~/Images/minus.png"
Else
img.ImageUrl = "~/Images/plus.png"
End If
End If
End Sub
Screenshot
