Hi manishvad,
Check this example. Now please take its reference and correct your code.
HTML
<div>
<asp:GridView ID="gvTotal" runat="server" AutoGenerateColumns="false" OnRowEditing="gvTotal_RowEditing"
OnRowCancelingEdit="gvTotal_RowCancelingEdit" OnRowUpdating="gvTotal_RowUpdating">
<Columns>
<asp:BoundField DataField="POItemNetValue" HeaderText="Net Value" SortExpression="POItemNetValue">
</asp:BoundField>
<asp:BoundField DataField="POItemQty" HeaderText="POItemQty" SortExpression="Qty">
</asp:BoundField>
<asp:BoundField DataField="POItemTotal" HeaderText="POItemTotal" SortExpression="Total">
</asp:BoundField>
<asp:CommandField ShowEditButton="True" ControlStyle-CssClass="btn btn-danger" ItemStyle-Width="150px"
ShowDeleteButton="false"></asp:CommandField>
</Columns>
</asp:GridView>
</div>
Namespaces
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[3] {
new DataColumn("POItemNetValue"),
new DataColumn("POItemQty"),
new DataColumn("POItemTotal") });
dt.Rows.Add(10, 10, 100);
dt.Rows.Add(15, 10, 150);
dt.Rows.Add(12, 10, 120);
dt.Rows.Add(13, 10, 130);
ViewState["dt"] = dt;
this.BindGrid();
}
}
protected void BindGrid()
{
gvTotal.DataSource = ViewState["dt"] as DataTable;
gvTotal.DataBind();
}
protected void gvTotal_RowEditing(object sender, GridViewEditEventArgs e)
{
gvTotal.EditIndex = e.NewEditIndex;
this.BindGrid();
}
protected void gvTotal_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = gvTotal.Rows[e.RowIndex] as GridViewRow;
int netValue = Convert.ToInt32((row.Cells[0].Controls[0] as TextBox).Text);
int qty = Convert.ToInt32((row.Cells[1].Controls[0] as TextBox).Text);
int total = netValue * qty;
DataTable dt = ViewState["dt"] as DataTable;
dt.Rows[row.RowIndex]["POItemQty"] = qty;
dt.Rows[row.RowIndex]["POItemTotal"] = total;
ViewState["dt"] = dt;
gvTotal.EditIndex = -1;
this.BindGrid();
}
protected void gvTotal_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gvTotal.EditIndex = -1;
this.BindGrid();
}
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(2) {New DataColumn("POItemNetValue"), New DataColumn("POItemQty"), New DataColumn("POItemTotal")})
dt.Rows.Add(10, 10, 100)
dt.Rows.Add(15, 10, 150)
dt.Rows.Add(12, 10, 120)
dt.Rows.Add(13, 10, 130)
ViewState("dt") = dt
Me.BindGrid()
End If
End Sub
Protected Sub BindGrid()
gvTotal.DataSource = TryCast(ViewState("dt"), DataTable)
gvTotal.DataBind()
End Sub
Protected Sub gvTotal_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
gvTotal.EditIndex = e.NewEditIndex
Me.BindGrid()
End Sub
Protected Sub gvTotal_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
Dim row As GridViewRow = TryCast(gvTotal.Rows(e.RowIndex), GridViewRow)
Dim netValue As Integer = Convert.ToInt32((TryCast(row.Cells(0).Controls(0), TextBox)).Text)
Dim qty As Integer = Convert.ToInt32((TryCast(row.Cells(1).Controls(0), TextBox)).Text)
Dim total As Integer = netValue * qty
Dim dt As DataTable = TryCast(ViewState("dt"), DataTable)
dt.Rows(row.RowIndex)("POItemQty") = qty
dt.Rows(row.RowIndex)("POItemTotal") = total
ViewState("dt") = dt
gvTotal.EditIndex = -1
Me.BindGrid()
End Sub
Protected Sub gvTotal_RowCancelingEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs)
gvTotal.EditIndex = -1
Me.BindGrid()
Screenshot
