【问题标题】:Can I fire button click event without firing pageload event?我可以在不触发 pageload 事件的情况下触发按钮单击事件吗?
【发布时间】:2012-06-20 17:22:10
【问题描述】:

我的页面上有一个按钮,并且有几个文本框会在 page_load 事件中改变它们的上下文。当我第一次打开页面时,它将随机数据从数据库加载到具有页面加载功能的文本框,并且我动态创建了这些文本框。我想要的是对文本框文本进行一些更改,然后单击按钮而不是将文本框的新上下文发送到数据库。但是,当我单击按钮时,PageLoad 事件会再次触发,它会重新生成文本框,并且它们的上下文自然会发生变化,因为它们是新创建的文本框。我尝试在页面加载中使用“if(!Page.isPostBack)”,但是没有创建文本框和相关对象,它们变为空。

我该如何克服这个问题? 我能想到的最好的事情是找到一些方法来触发按钮单击事件而不触发 PageLoad 事件,但我不知道该怎么做。

任何帮助将不胜感激;)

【问题讨论】:

  • 即使是部分回发也会执行页面加载。
  • 能否在每次页面加载执行时重新生成Textbox?并且这些Textbox 的数据分配应该在!Page.IsPostback 之下。您所要做的就是将文本框的 ID 保存在 ViewState 中,只有第一次页面加载和下一次重新生成文本框时才会有之前存储的 ID,并且您还必须将 ID 对应的数据存储在 ViewState 中。有意义吗?
  • 是的,它确实有道理,但我不知道什么是 ViewState :/ 如果我学会以某种方式使用它们,我可以用它来保存一些 int 或 string 值吗?
  • 是的。它也可以保存对象/集合
  • 非常感谢朋友 ;) 效果很好 :) 使用 ViewStates 解决了我的问题 ;) 我现在很高兴感谢你 :))

标签: asp.net page-lifecycle pageload buttonclick


【解决方案1】:

来自评论

您能否在每次页面加载执行时重新生成Textbox?并且这些Textbox 的数据分配应该在!Page.IsPostback 之下。您所要做的就是将Textbox 的ID 保留在ViewState 中,只有第一次页面加载和Textbox 的下一次重新生成将具有先前存储的ID,并且您还必须将ID 对应的数据存储在ViewState 中。有意义吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-18
    • 2012-01-19
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 2016-04-25
    • 2012-09-12
    • 2019-06-22
    相关资源
    最近更新 更多