ASP.NET - динамические строки и Page_Load - PullRequest
0 голосов
/ 27 января 2012

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

Пары ключ / значение генерируются динамически в событии 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);

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

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

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

То, что я пытался сделать, - это выполнить генерацию динамического контента, если это не постбэк. То есть:

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

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

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

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

1 Ответ

0 голосов
/ 30 января 2012

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

...