Hi akhter,
Check this example. Now please take its reference and correct your code.
HTML
<asp:TextBox ID="txttotalday" runat="server" Text="30"></asp:TextBox>
<asp:GridView ID="gvv" runat="server" AutoGenerateSelectButton="false" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<asp:Label ID="Emp_ID" runat="server" Text='<%#Bind("Emp_ID")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="EMp_Name" runat="server" Text='<%#Bind("EMp_Name")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="salary">
<ItemTemplate>
<asp:Label ID="EMP_Salary" runat="server" Text='<%#Bind("EMP_Salary")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Deduction">
<ItemTemplate>
<asp:Label ID="Emp_Deduction" runat="server" Text='<%#Bind("Emp_Deduction")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Present">
<ItemTemplate>
<asp:TextBox ID="txtpresent" runat="server" Text='0' AutoPostBack="true" OnTextChanged="OnCalculate"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Absent">
<ItemTemplate>
<asp:Label ID="txtabsent" runat="server" Text='0'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Namepsaces
C#
using System.Data;
VB.Net
Imports System.Data
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
new DataColumn("Emp_ID"), new DataColumn("EMp_Name"),
new DataColumn("EMP_Salary"), new DataColumn("Emp_Deduction")});
dt.Rows.Add(1, "John Hammond", "100000", "2400");
dt.Rows.Add(2, "Mudassar Khan", "150000", "2400");
dt.Rows.Add(3, "Suzanne Mathews", "125000", "2400");
dt.Rows.Add(4, "Robert Schidner", "600000", "2400");
gvv.DataSource = dt;
gvv.DataBind();
}
}
protected void OnCalculate(object sender, EventArgs e)
{
TextBox present = sender as TextBox;
Label absent = (present.NamingContainer as GridViewRow).FindControl("txtabsent") as Label;
Calculate(txttotalday, present, absent);
}
private void Calculate(TextBox total, TextBox present, Label absent)
{
absent.Text = (Convert.ToInt32(total.Text) - Convert.ToInt32(present.Text)).ToString();
}
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 DataTable = New DataTable()
dt.Columns.AddRange(New DataColumn() {
New DataColumn("Emp_ID"), New DataColumn("EMp_Name"),
New DataColumn("EMP_Salary"), New DataColumn("Emp_Deduction")})
dt.Rows.Add(1, "John Hammond", "100000", "2400")
dt.Rows.Add(2, "Mudassar Khan", "150000", "2400")
dt.Rows.Add(3, "Suzanne Mathews", "125000", "2400")
dt.Rows.Add(4, "Robert Schidner", "600000", "2400")
gvv.DataSource = dt
gvv.DataBind()
End If
End Sub
Protected Sub OnCalculate(ByVal sender As Object, ByVal e As EventArgs)
Dim present As TextBox = TryCast(sender, TextBox)
Dim absent As Label = TryCast((TryCast(present.NamingContainer, GridViewRow)).FindControl("txtabsent"), Label)
Calculate(txttotalday, present, absent)
End Sub
Private Sub Calculate(ByVal total As TextBox, ByVal present As TextBox, ByVal absent As Label)
absent.Text = (Convert.ToInt32(total.Text) - Convert.ToInt32(present.Text)).ToString()
End Sub