2012-01-27 7 views
0

У меня возникла проблема с формой C# ASP.NET. Цель формы - загрузить некоторые пары ключ/значение из базы данных, чтобы позволить пользователю просматривать, редактировать или удалять их.ASP.NET - Динамические строки и Page_Load

Пара ключей/значений динамически генерируется в событии Page_Load, и все работает хорошо, когда страница сначала открывается. Вот пример кода (вырезаны из оригинала)

TableRow row = new TableRow(); 
TableCell cell = new TableCell(); 
cell.Text = keyName; 
row.Cells.Add(cell); 
cell = new TableCell(); 
cell.Text = keyValue; 
row.Cells.Add(cell); 
KeyValueTable.Rows.Add(row); 

Я просто перебрать все пары ключ/значение, и каждый добавляются динамически к столу. В момент загрузки страницы все работает бесперебойно, и все пары Key/Value отображаются так, как ожидалось.

Проблема возникает, когда пользователь нажимает кнопку, которая с момента установки на runat = "server" генерирует событие обратной связи. Это, как представляется, - это очистить динамический контент, сгенерированный выше, а затем воссоздать его (поскольку он создан в событии Page_Load).

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

Я попытался выполнить генерацию динамического содержимого, если он не является обратной передачей. IE:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     GenerateDynamicContent(); 
    } 
} 

Однако то, что сейчас делает генерации динамического содержимого при первой загрузке страницы, однако, как только произойдет какое-постбэк событие (например, нажатие кнопки пользователем), динамическое содержимое вытирается, но не создано.

В основном, на что я надеюсь, заключается в том, чтобы обнаружить способ, которым я могу создать динамический контент, как показано выше, который не стирается при любом событии обратной передачи. Я хочу иметь возможность контролировать, когда он обновляется, а не происходит в любом событии обратной передачи. Это возможно?

Большое спасибо

+0

Есть много способов 1. Попробуйте поставить эту DataTable в ViewState и отметьте нулевое значение в postback 2. поместите некоторое скрытое поле в форму и проверьте. if (! IsPostBack && hiddenfield1.value), которые могут вам помочь – Madhu

ответ

0

Я обнаружил, что положить динамический код в Page_Init вместо Page_Load предотвращает содержимое от вытираясь во время постбэк

Смежные вопросы