Я делал это несколько раз. Основная предпосылка моего решения заключается в том, что вы загружаете данные в локальную коллекцию и сохраняете их в ViewState страницы.
List<MyObject> lst = new List<MyObject>();
// Populate the list from the database here
// Store this list in the ViewState
ViewState["List"] = lst;
Затем у меня есть функция, которая связывает этот список с GridView, который я вызываю в первой Page_Load, и любая функция, которая модифицирует этот список:
function BindList() {
List<MyObject> lst = (List<MyObject>) ViewState["List"];
GridView1.DataSource = lst;
GridView1.DataBind();
}
Чтобы добавить новый элемент ...
function cmdAdd_Click(object sender, EventArgs e) {
// Retrieve list from ViewState
List<MyObject> lst = (List<MyObject>) ViewState["List"];
// Add the new item
MyObject newObj = new MyObject(); // Populate this from your form
lst.Add(newObj);
// Update the list in the ViewState
ViewState["List"] = lst;
// Update the grid to show the new item
BindList();
}
Если вы хотите сохранить все элементы в базе данных, просто получите список из ViewState.