【发布时间】: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