Я сделал это несколько раз. Основная предпосылка моего решения заключается в том, что вы загружаете данные в локальную коллекцию и сохраняете их в 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.