应该在哪个事件中设置动态控制属性
本文关键字:设置 动态控制 属性 事件 | 更新日期: 2023-09-27 18:25:40
本文指出Page_PreInit
应用于
创建或重新创建动态控件。
例如:
Button button = new Button();
somePanel.Controls.Add(button);
很好。我理解
但是,它还说:
如果请求是回发,则控件的值尚未已从视图状态还原。如果将控件属性设置为阶段,其值可能在下一个事件中被覆盖。
嗯
这是否意味着我所要做的就是创建按钮,但不设置按钮的任何成员?
例如:
Button button = new Button() { CommandArgument="arg" };
somePanel.Controls.Add(button);
这是否意味着在此事件中设置CommandArgument
不正确/不推荐/可能导致错误/意外行为?
假设它是不正确的,这会让我认为一个人必须做这样的事情:
protected void Page_PreInit(object sender.....)
{
somePanel.Controls.Add((new Button());
}
protected void Page_Init(object sender.....)
{
foreach(Button button in somePanel.Controls)
button.CommandArgument = "arg";
}
这是正确的路吗?
最后,在哪种情况下应该设置动态控制属性
如果请求是回发,则控件的值尚未已从视图状态还原。如果将控件属性设置为阶段,其值可能在下一个事件中被覆盖。
可能是这里的关键词。如果您考虑一些属性,这些属性可能会随着表单经历各种状态而发生变化,那么这就是您必须小心可能被覆盖的内容,以及这是否是一件坏事的问题,因为更新后的值可能会持续存在,而在其他情况下,原始值可能会更好,例如有人想将表单重置为初始状态。
我的建议是做一些尝试和错误,看看什么是有效的,因为我记得在某些情况下,使用动态控件可能很难正确管理。