【发布时间】:2014-01-30 08:49:38
【问题描述】:
我显然对网站的运作方式并不完全清楚。
(Using vb.net, visual studio, web forms)
但这里是:
在每次 postback-page_load 之后总是发生另一个 page_load(这不是 postback)是否正常?还是我目前正在适应的网站有些奇怪?
为什么 page_load 中的 checkbox.checked-property 始终为 false,尽管在页面加载时已检查过?
实际问题:我有一个带有网格视图的页面,绑定到数据集。在 page_load 上,我根据某些条件动态添加一些额外的列。 (仅当 page_load 不是回发时,我才添加它们。)
现在,我添加了一个asp:checkbox。如果选中,我希望页面重新加载并添加列,但方式略有不同(以便可编辑)。我试图检查 page_load 上的 checkbox.checked-property,但这就是发生的情况:首先,我得到一个 postback-page_load,其中 check-property 为真(如我所料)。然而,紧接着我得到一个normal page_load,其中检查属性为假-尽管在加载页面后,复选框被选中。
由于我在normal page_load 上添加了额外的列,然后checked 始终为假,因此始终以常规方式添加列...
也许我不应该在normal page_load 中添加列,而是在回发中添加列,或者同时添加列。但事实上,列的添加是有效的,在这种情况下,如果我也将它们添加到回发中,它不会有什么不同,因为它后面总是会跟着一个 normal page_load 在其中检查- 属性为假。
我错过了什么??
【问题讨论】:
-
我认为 Page_Load 不应该触发两次,您是否有任何控件可以自行更新页面?此外,您应该尝试将您的 gridview 绑定包含在
if(!IsPostBack)语句中(我不确定 VB 的等价物,抱歉!)。您也可以尝试使用 Checkbox 的 AutoPostback 功能并使用 OnCheckedChanged 事件。您可以使用此处的额外列重新绑定您的网格视图。 -
您是在向 gridview 还是向数据集添加额外的列?例如,如果我想要网格中的行标题,或者在某些情况下需要额外的列,我会修改数据集,然后绑定网格。如果您修改网格,回发时它似乎会丢失修改,您必须重新创建它们。
-
我将它们添加到网格中,而不是数据集中。在这种情况下,我认为这并不重要,因为常规 page_load 总是遵循“重置”网格的回发..
-
不,PageLoad 总是发生在您回发时调用的任何内容之前。
-
如 (1) 中所述,我正在查看一个网站,当我单击一个按钮时,我会收到一个带有 postback=true 的 page_load-event,但不久之后会出现一个带有 postback=false 的 page_load。问:这正常吗?我想它不是,这是这个网站的问题......
标签: asp.net vb.net visual-studio webforms