Here I have created sample using your code,I am not getting issue like you.
HTML
<div>
<asp:GridView ID="GridViewcmt" runat="server" AutoGenerateColumns="False" DataKeyNames="CommentId"
OnRowEditing="OnRowEditing" OnRowUpdating="OnRowUpdating" EmptyDataText="No records has been added.">
<Columns>
<asp:TemplateField HeaderText="UserName" ItemStyle-Width="80">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# Eval("UserName") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtName" runat="server" Text='<%# Eval("UserName") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Subject" ItemStyle-Width="100">
<ItemTemplate>
<asp:Label ID="lblSub" runat="server" Text='<%# Eval("Subject") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtSub" runat="server" Text='<%# Eval("Subject") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Comment" ItemStyle-Width="80">
<ItemTemplate>
<asp:Label ID="lblCmt" runat="server" Text='<%# Eval("CommentOn") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtCmt" runat="server" Text='<%# Eval("CommentOn") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Comment" ItemStyle-Width="80">
<ItemTemplate>
<asp:Label ID="lbimg" runat="server" Text='<%# Eval("Imageid") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtimg" runat="server" Text='<%# Eval("Imageid") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ButtonType="Link" ShowEditButton="true" ShowDeleteButton="true"
ItemStyle-Width="150" />
</Columns>
</asp:GridView>
</div>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.BindGrid();
}
}
protected void OnRowEditing(object sender, GridViewEditEventArgs e)
{
GridViewcmt.Visible = true;
GridViewcmt.EditIndex = e.NewEditIndex;
this.BindGrid();
}
protected void BindGrid()
{
GridViewcmt.Visible = true;
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[5] { new DataColumn("UserName", typeof(string)),
new DataColumn("Subject", typeof(string)),
new DataColumn("CommentOn",typeof(DateTime)),
new DataColumn("Imageid",typeof(int)),
new DataColumn("CommentId",typeof(int))});
dt.Rows.Add("David", "Morkel", "2015-05-05", 123, 1);
dt.Rows.Add("Jhon", "Carter", "2015-06-06", 252, 2);
GridViewcmt.DataSource = dt;
GridViewcmt.DataBind();
}
protected void OnRowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewcmt.Visible = true;
GridViewRow row = GridViewcmt.Rows[e.RowIndex];
string cmtid = (GridViewcmt.DataKeys[e.RowIndex].Values[0]).ToString();
string name = (row.FindControl("txtName") as TextBox).Text;
string sub = (row.FindControl("txtSub") as TextBox).Text;
string cmt = (row.FindControl("txtCmt") as TextBox).Text;
string img = (row.FindControl("txtimg") as TextBox).Text;
GridViewcmt.EditIndex = -1;
this.BindGrid();
}
I hope this will help you out.