Hi manishvad,
Check this example. Now please take its reference and correct your code.
HTML
<asp:GridView ID="gvItem" runat="server" AutoGenerateColumns="false" OnRowEditing="OnRowEditing">
<Columns>
<asp:BoundField DataField="POItemNetValue" HeaderText="Net Value"></asp:BoundField>
<asp:BoundField DataField="POItemQty" HeaderText="POItemQty"></asp:BoundField>
<asp:BoundField DataField="POItemTotal" HeaderText="POItemTotal"></asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton Text="Edit" runat="server" CommandName="Edit" />
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" Text="Update" runat="server" OnClick="OnUpdate" />
<asp:LinkButton ID="LinkButton2" Text="Cancel" runat="server" OnClick="OnCancel" />
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView
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()
{
gvItem.DataSource = ViewState["dt"] as DataTable;
gvItem.DataBind();
}
protected void OnRowEditing(object sender, GridViewEditEventArgs e)
{
gvItem.EditIndex = e.NewEditIndex;
this.BindGrid();
}
protected void OnUpdate(object sender, EventArgs e)
{
GridViewRow row = (sender as LinkButton).NamingContainer 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;
gvItem.EditIndex = -1;
this.BindGrid();
}
protected void OnCancel(object sender, EventArgs e)
{
gvItem.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()
gvItem.DataSource = TryCast(ViewState("dt"), DataTable)
gvItem.DataBind()
End Sub
Protected Sub OnRowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
gvItem.EditIndex = e.NewEditIndex
Me.BindGrid()
End Sub
Protected Sub OnUpdate(ByVal sender As Object, ByVal e As EventArgs)
Dim row As GridViewRow = TryCast((TryCast(sender, LinkButton)).NamingContainer, 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
gvItem.EditIndex = -1
Me.BindGrid()
End Sub
Protected Sub OnCancel(ByVal sender As Object, ByVal e As EventArgs)
gvItem.EditIndex = -1
Me.BindGrid()
End Sub
Screenshot
