2010-06-16 2 views
1

У меня проблема и вы хотите знать, может ли кто-нибудь помочь мне.Доступ к элементам управления перед завершением Page_Load

Я создаю таблицу с некоторыми элементами управления, и я хочу сохранить все контрольные значения в каждой обратной передаче. Поскольку элементы управления только определены после Page_Load, я не могу решить мою проблему таким образом:

object o; 
protected void Page_Load(object sender, EventArgs e) 
{ 
o = createObject(); 
    Create_Table(); 
if (Page.IsPostBack) 
    Save_Data(); 
} 

Я думал, что я мог бы выполнить Save_Data() в начале каждого события обратной передачи, но я думаю, что должен существовать лучший способ решить мою проблему.

Спасибо.

ответ

0

Ваша переменная 'o' не будет содержать ваше первоначальное значение после завершения обратной передачи. Это связано с тем, что каждый запрос создает новый объект страницы на сервере, и ваши значения переменной участника будут потеряны. Было бы лучше использовать встроенное свойство Session для сохранения ваших данных между запросами.

Смотрите мой ответ here

+0

Дело в том, : Я не хочу, чтобы объект был переменной сеанса, я предпочитаю создавать его на каждой странице_load. Объект создается на основе некоторых файлов, а его основные функции: предоставить структуру таблицы и сохранить значения таблиц. Таблица всегда будет иметь одинаковую структуру, но ее значения могут отличаться, и я хочу сохранить их в файлах новыми значениями, прежде чем что-либо произойдет. – userk

1

Так как вы хотите, чтобы это было на уровне страницы, почему бы не использовать ViewState? Поскольку o всегда всегда задается с одинаковыми данными, возможно, нет необходимости устанавливать его более одного раза, хотя если вы действительно хотите, чтобы вы могли удалить ненужные вещи ...

protected object o 
{ 
    get { 
     return ViewState["o"]; 
    } 
    set { 
     ViewState["o"] = value; 
    } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) { o = createObject(); }   
    Create_Table(); 
    if (Page.IsPostBack) 
     Save_Data(); 
} 
Смежные вопросы