【问题标题】:Textbox inside a Repeater inside a Custom Server Control loses values自定义服务器控件内的中继器内的文本框丢失值
【发布时间】:2011-01-04 16:06:34
【问题描述】:

我正在开发我的第一个自定义服务器控件,它将显示带有文本框的字段列表。当包含此自定义服务器控件的页面被回发时,文本框中的值将丢失,因为转发器被重新绑定,或者视图状态未保留这些值。

如何让转发器在回发之间保存文本框的值?

干杯!

【问题讨论】:

  • 确保您的代码在检查 page.ispostback 的条件语句中。如果不是回发,绑定你的转发器
  • 我已将“If Not Page.IsPostBack Then”放在“CreateChildControls”子中。但这只是意味着在回发时它不会重建转发器

标签: postback asp.net-3.5 viewstate repeater custom-server-controls


【解决方案1】:

您很可能没有在页面生命周期的正确阶段重新创建自定义控件。 Viewstate 在生命周期的OnInit() 事件之后立即恢复。因此,如果您在此之后添加控件,则无法恢复 Viewstate。

尝试将动态控件的创建移至页面的OnInit() 事件。

【讨论】:

    【解决方案2】:

    如果您动态填充中继器? 那么您可能会遇到时序创建问题,具体取决于加载视图状态的时间

    尝试将所有动态控件创建放入 Page_Init 事件中,以防止时序创建问题

    即不使用 Page_Load 事件,而是使用 Page_Init 事件在您的控件中动态绑定数据。

    protected void Page_Init(object sender, EventArgs e){ ..... }
    

    问候,希望对您有所帮助

    【讨论】:

      猜你喜欢
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多