Hi,
Here I have created sample that will help you out.
HTML
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="Id"
OnRowEditing="OnRowEditing" OnRowCancelingEdit="OnRowCancelingEdit" OnRowUpdating="OnRowUpdating"
EmptyDataText="No records has been added." AutoGenerateEditButton="true">
<Columns>
<asp:TemplateField HeaderText="Name" ItemStyle-Width="150">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtName" runat="server" Text='<%# Eval("Name") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Country" ItemStyle-Width="150">
<ItemTemplate>
<asp:Label ID="lblCountry" runat="server" Text='<%# Eval("Country") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtCountry" runat="server" Text='<%# Eval("Country") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Salary" ItemStyle-Width="150">
<ItemTemplate>
<asp:Label ID="lblSalary" runat="server" Text='<%# Eval("Salary") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtSalary" runat="server" Text='<%# Eval("Salary") %>' AutoPostBack="true"
OnTextChanged="CalculateTotal"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Bonus" ItemStyle-Width="150">
<ItemTemplate>
<asp:Label ID="lblBonus" runat="server" Text='<%# Eval("Bonus") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtBonus" runat="server" Text='<%# Eval("Bonus") %>' AutoPostBack="true"
OnTextChanged="CalculateTotal"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Total" ItemStyle-Width="150">
<ItemTemplate>
<asp:Label ID="lblTotal" runat="server" Text='<%#string.Format(new CultureInfo(CultureInfo.CurrentCulture.Name), "{0:N2}", Eval("Total")) %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtTotal" runat="server" Text='<%#string.Format(new CultureInfo(CultureInfo.CurrentCulture.Name), "{0:N2}", Eval("Total")) %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
BindGrid();
}
}
protected void CalculateTotal(object sender, EventArgs e)
{
GridViewRow row = (sender as TextBox).NamingContainer as GridViewRow;
TextBox txtSalary = row.FindControl("txtSalary") as TextBox;
TextBox txtBonus = row.FindControl("txtBonus") as TextBox;
TextBox txttotal = row.FindControl("txtTotal") as TextBox; ;
decimal num1 = decimal.Parse(txtSalary.Text);
decimal num2 = decimal.Parse(txtBonus.Text);
txttotal.Text = (num1 + num2).ToString("N2", CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name));
}
private void BindGrid()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[6] { new DataColumn("Id", typeof(int)),
new DataColumn("Name", typeof(string)),
new DataColumn("Country",typeof(string)) ,
new DataColumn("Salary", typeof(int)),
new DataColumn("Bonus", typeof(int)),
new DataColumn("Total", typeof(int))});
dt.Rows.Add(1, "John Hammond", "United States", 10000, 2000, 12000);
dt.Rows.Add(2, "Mudassar Khan", "India", 15000, 3000, 18000);
dt.Rows.Add(3, "Suzanne Mathews", "France", 16000, 3000, 19000);
dt.Rows.Add(4, "Robert Schidner", "Russia", 18000, 4000, 22000);
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void OnRowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
this.BindGrid();
}
protected void OnRowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = GridView1.Rows[e.RowIndex];
int customerId = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]);
string name = (row.FindControl("txtName") as TextBox).Text;
string country = (row.FindControl("txtCountry") as TextBox).Text;
string Sal = (row.FindControl("txtSalary") as TextBox).Text;
string bonus = (row.FindControl("txtBonus") as TextBox).Text;
string total = (row.FindControl("txtTotal") as TextBox).Text;
// Write code to update
}
protected void OnRowCancelingEdit(object sender, EventArgs e)
{
GridView1.EditIndex = -1;
this.BindGrid();
}
VB
Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not Me.IsPostBack Then
BindGrid()
End If
End Sub
Protected Sub CalculateTotal(sender As Object, e As EventArgs)
Dim row As GridViewRow = TryCast(TryCast(sender, TextBox).NamingContainer, GridViewRow)
Dim txtSalary As TextBox = TryCast(row.FindControl("txtSalary"), TextBox)
Dim txtBonus As TextBox = TryCast(row.FindControl("txtBonus"), TextBox)
Dim txttotal As TextBox = TryCast(row.FindControl("txtTotal"), TextBox)
Dim num1 As Decimal = Decimal.Parse(txtSalary.Text)
Dim num2 As Decimal = Decimal.Parse(txtBonus.Text)
txttotal.Text = (num1 + num2).ToString("N2", CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name))
End Sub
Private Sub BindGrid()
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(5) {New DataColumn("Id", GetType(Integer)), New DataColumn("Name", GetType(String)), New DataColumn("Country", GetType(String)), New DataColumn("Salary", GetType(Integer)), New DataColumn("Bonus", GetType(Integer)), New DataColumn("Total", GetType(Integer))})
dt.Rows.Add(1, "John Hammond", "United States", 10000, 2000, 12000)
dt.Rows.Add(2, "Mudassar Khan", "India", 15000, 3000, 18000)
dt.Rows.Add(3, "Suzanne Mathews", "France", 16000, 3000, 19000)
dt.Rows.Add(4, "Robert Schidner", "Russia", 18000, 4000, 22000)
GridView1.DataSource = dt
GridView1.DataBind()
End Sub
Protected Sub OnRowEditing(sender As Object, e As GridViewEditEventArgs)
GridView1.EditIndex = e.NewEditIndex
Me.BindGrid()
End Sub
Protected Sub OnRowUpdating(sender As Object, e As GridViewUpdateEventArgs)
Dim row As GridViewRow = GridView1.Rows(e.RowIndex)
Dim customerId As Integer = Convert.ToInt32(GridView1.DataKeys(e.RowIndex).Values(0))
Dim name As String = TryCast(row.FindControl("txtName"), TextBox).Text
Dim country As String = TryCast(row.FindControl("txtCountry"), TextBox).Text
Dim Sal As String = TryCast(row.FindControl("txtSalary"), TextBox).Text
Dim bonus As String = TryCast(row.FindControl("txtBonus"), TextBox).Text
Dim total As String = TryCast(row.FindControl("txtTotal"), TextBox).Text
' Write code to update
End Sub
Protected Sub OnRowCancelingEdit(sender As Object, e As EventArgs)
GridView1.EditIndex = -1
Me.BindGrid()
End Sub
Screenshot
