ASP.NET - 动态行和Page_Load

时间:2012-01-27 04:38:51

标签: asp.net postback dynamic-controls

我遇到了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 :(得分:0)

我发现将动态代码放入Page_Init而不是Page_Load会阻止在回发期间擦除内容