Hi dorsa,
Check your datatype may you have used int type and you are using in your code byte for that reason you are getting error cast is not valid. so you need to chek your datatype according to your columns type use datatype in your code.
Refer below sample code is running.
HTML
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="وضعیت حضور و غیاب" SortExpression="ExamAttendanceTypeId">
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# ShowAttendanceStatus(Eval("AttendanceStatus")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Title" HeaderText="نام خانوادگی" SortExpression="LastName" />
<asp:BoundField DataField="StudentId" HeaderText="StudentId" SortExpression="StudentId" />
</Columns>
</asp:GridView>
Namespaces
C#
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
VB.Net
Imports System.Data.SqlClient
Imports System.Data
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT * FROM UpdateTable1", con))
{
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
}
}
}
protected string ShowAttendanceStatus(object i)
{
if ((int)i == 1)
{
return "Present";
}
else if ((int)i == 2)
{
return "UnAcceptable Absent";
}
else
{
return " Acceptable Absent ";
}
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As SqlConnection = New SqlConnection(constr)
Using cmd As SqlCommand = New SqlCommand("SELECT * FROM UpdateTable1", con)
Using da As SqlDataAdapter = New SqlDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
da.Fill(dt)
GridView1.DataSource = dt
GridView1.DataBind()
End Using
End Using
End Using
End If
End Sub
Protected Function ShowAttendanceStatus(ByVal i As Object) As String
If CInt(i) = 1 Then
Return "Present"
ElseIf CInt(i) = 2 Then
Return "UnAcceptable Absent"
Else
Return " Acceptable Absent "
End If
End Function
Screenshot
![](https://i.imgur.com/9Ovlqln.jpg)