【问题标题】:ASP.NET - Dynamic Rows and Page_LoadASP.NET - 动态行和 Page_Load
【发布时间】:2012-01-30 11:06:17
【问题描述】:

我在使用 C# ASP.NET 表单时遇到问题。该表单的目的是从数据库中加载一些键/值对,以允许用户查看、编辑或删除它们。

Key/Value 对是在 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. 尝试将该数据表放入视图状态并在回发中检查 null 2. 在表单上放置一些隐藏字段并检查。 if(!IsPostBack && hiddenfield1.value) 可能对你有帮助

标签: asp.net postback dynamic-controls


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-01-21
    • 2011-12-26
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 2011-08-03
    • 2014-06-18
    相关资源
    最近更新 更多