Вы ищете ASP .NET State Management и Есть несколько способов борьбы с ним:
- Посмотреть состояние
- состояние управления
- Скрытые поля
- Печенье
- строки запроса
- Состояние приложения
- состояние сеанса
- Свойства профиля
С, которого не предоставляют больше информации я хотел бы предложить вам использовать состояние сеанса для сохранения данных, так как это самый простой способ сделать это, потому что информация будет храниться на на стороне сервера, где он принадлежит (вместо неправильного использования ViewState, где информация собирается дважды клиенту, одна в GridView.DataBind() и еще одна в ViewState). Вам нужно сделать что-то вроде этого:
MyGridView.Datasource = (List<Object>)Session["myGridViewData"];
MyGridView.DataBind();
Всякий раз, когда вы вставляете/удалить/изменить новую строку, которую необходимо обновить набор данных в вашей переменной myGridViewData Session.
И помните, чтобы обновить GridView.DataSource на каждом постбэка поэтому вы не потеряете информацию:
protected void Page_Load(object sender, EventArgs e)
{
grid1.DataSource = getDataSet();
grid1.DataBind();
}
private List<Object> getDataSet()
{
if (Session["myGridViewData"] == null)
Session["myGridViewData"] = new List<employee>();
return (List<Object>)Session["myGridViewData"];
}
protected void addNewRowButton_Click(object sender, EventArgs e)
{
List<Object> list = (List<Object>)Session["myGridViewData"];
list.Add(new Object());
Session["myGridViewData"] = list;
}
Имейте в виду , что не является хорошей практикой для обновления элементов управления на Page_Load случае, вместо него вы должны обращаться который из ваших postbacks обновляет данные и обновляет сетку при методах apropiate (первая загрузка страницы и добавление/изменение/удаление строки).
При использовании .NET Framework 4.5 или выше я посоветую вам использовать связывание GridView модель (SelectMethod) GridView Model Binding С этим не necesary обновить DataSource на каждом постбэка явно в методе Page_Load, который является экологически чистым способом делать это.
EDIT: От here
состояния сеанса или ViewState?
Есть определенные случаи, когда сохранение значения состояния в ViewState равно не самый лучший вариант. Наиболее часто используемой альтернативой является Сессия состояние, которое, как правило, лучше всего подходит для:
Большие объемы данных. Поскольку ViewState увеличивает размер как страницы, отправленной в браузер (полезная нагрузка HTML), так и размера формы , отправленной назад, это плохой выбор для хранения больших объемов данных.
Защищенные данные, которые еще не отображены в пользовательском интерфейсе. Хотя данные ViewState кодируются и могут быть зашифрованы, ваши данные наиболее безопасны, если они никогда не отправляются клиенту. Таким образом, состояние сеанса - - более безопасный вариант. (Сохранение данных в базе данных еще больше обеспечивается за счет дополнительных учетных данных базы данных. Вы можете добавить SSL для еще лучшую защиту ссылок.) Но если вы указали личные данные в пользовательском интерфейсе, возможно, вы уже удобно с защитой самой ссылки. В этом случае не менее безопасно помещать то же значение в ViewState.
Объекты, не легко сериализованные в ViewState, например DataSet. Сериализатор ViewState оптимизирован для небольшого набора общих типов объектов , перечисленных ниже. Другие типы, которые могут быть сериализованы , могут сохраняться в ViewState, но они медленнее и генерируют очень большой размер ViewState размером .
Возможный дубликат [Добавить строку в табличном] (http://stackoverflow.com/questions/19257451/add-row-to-grid-view) – VDWWD
@VDWWD Пожалуйста, ознакомьтесь с обновлениями – Null