【问题标题】:Checkbox.checked false in page_loadpage_load 中的 Checkbox.checked 错误
【发布时间】:2014-01-30 08:49:38
【问题描述】:

我显然对网站的运作方式并不完全清楚。

(Using vb.net, visual studio, web forms) 但这里是:

  1. 在每次 postback-page_load 之后总是发生另一个 page_load(这不是 postback)是否正常?还是我目前正在适应的网站有些奇怪?

  2. 为什么 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


【解决方案1】:

只需确保EnableViewState 属性是否设置为默认设置为 TRUE。

服务器控件的状态在 ViewState 中维护,因此只有将此属性设置为 FALSE 时才会出现问题。

您应该使用 if (NOT IsPostBack) 进行数据绑定

            Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
            Try
                If Not IsPostBack Then
                    GetAllContentAnnouncement()
                End If
            Catch ex As Exception

            End Try

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2015-03-13
    • 2018-05-31
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多