Могу предложить сделать следующее:
1) создать собственный объект списка, в котором хранятся ваши данные. Загрузить данные БД в этот объект и сохранить их в состоянии сеанса.
Объект:
public class InvestorClaim
{
public InvestorClaim()
{
}
private int? _record_id;
private int? _ic_record_id;
private Int64? _lh_record_id;
public int? record_id
{
get { return _record_id; }
set { _record_id = value; }
}
public int? ic_record_id
{
get { return _ic_record_id; }
set { _ic_record_id = value; }
}
public Int64? lh_record_id
{
get { return _lh_record_id; }
set { _lh_record_id = value; }
}
}
Загрузить данные в список:
List<InvestorClaim> inv_claim = new List<InvestorClaim>();
inv_clai= dataFromDB
Сохранить в сеансе:
HttpContext.Current.Session[ "InvestorClaimsObject" ] = inv_claim;
2) привязать сетку к объекту и манипулировать данными по мере необходимости.
protected void yourGridView_Bind()
{
inv_claim = HttpContext.Current.Session[ "InvestorClaimsObject" ] as List<InvestorClaim>;
yourGridView.DataSource = inv_claim;
BindData();
}
protected void yourGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
inv_claim = HttpContext.Current.Session[ "InvestorClaimsObject" ] as List<InvestorClaim>;
//Update the values.
GridViewRow row = yourGridView.Rows[e.RowIndex];
inv_claim[row.DataItemIndex].lh_record_id = ((TextBox)(row.Cells[1].Controls[0])).Text;
inv_claim[row.DataItemIndex].ic_record_id = ((TextBox)(row.Cells[2].Controls[0])).Text;
//Reset the edit index.
yourGridView.EditIndex = -1;
//Bind data to the GridView control.
yourGridView.DataSource = inv_claim;
BindData();
}
3) сохранить данные из объекта списка сеансов в БД, когда они будут готовы.