Try like this.!
Aspx Page looks like below
<form id="form1" runat="server">
<asp:scriptmanager runat="server" xmlns:asp="#unknown">
</asp:scriptmanager>
<asp:updatepanel runat="server" xmlns:asp="#unknown">
<contenttemplate>
<asp:gridview id="grdResult" runat="server" autogeneratecolumns="false">
<columns>
<asp:templatefield headertext="Length">
<itemtemplate>
<asp:textbox id="TxtLength" runat="server" text="<%#Bind("Length") %>" ontextchanged="TxtLength_TextChanged">
AutoPostBack="true"></asp:textbox>
</itemtemplate>
</asp:templatefield>
<asp:templatefield headertext="Width">
<itemtemplate>
<asp:textbox id="TxtWidth" runat="server" text="<%#Bind("Width") %>" ontextchanged="TxtWidth_TextChanged">
AutoPostBack="true"></asp:textbox>
</itemtemplate>
</asp:templatefield>
<asp:templatefield headertext="Area">
<itemtemplate>
<asp:textbox id="TxtArea" runat="server" text="<%#Bind("Area") %>" ontextchanged="TxtArea_TextChanged">
AutoPostBack="true"></asp:textbox>
</itemtemplate>
</asp:templatefield>
</columns>
</asp:gridview>
</contenttemplate>
</asp:updatepanel>
</form>
code behind page looks like below
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("Length", typeof(Double));
dt.Columns.Add("Width", typeof(Double));
dt.Columns.Add("Area", typeof(Double));
for (int i = 0; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["Length"] = 1;
dr["Width"] = 1;
dr["Area"] = 1;
dt.Rows.Add(dr);
}
grdResult.DataSource = dt;
grdResult.DataBind();
}
}
protected void TxtLength_TextChanged(object sender, EventArgs e)
{
}
protected void TxtWidth_TextChanged(object sender, EventArgs e)
{
}
protected void TxtArea_TextChanged(object sender, EventArgs e)
{
}