2012-07-27 25 views
1

我在论坛有很多ASP.NET控件。如果我更改了浏览器中的值并回发。它需要2回发让它在C#中显示,为什么这是?为什么ASP.NET控件值更改需要2次回传才能显示?

+0

您必须提供更多详细信息才能在此获得帮助。您不会显示ASP.NET控件的外观,客户端或服务器的代码或任何内容。对于我们所知的所有情况,它会检查一个静态变量,以确保它已多次发布以显示它。 – 2012-07-27 20:33:05

回答

3

是否在重新填充控件之前保存该值?如果不是,您的控件可能会显示陈旧的值,之后您保存,所以它不会在回发后显示,并且随后显示您看到更改。

+0

你绝对是对的!这正是发生的情况,但它是在Page_Load之后重新生成控件。这太晚了(我必须等到第二次回传才能看到它)。我如何在第一个回传的Page_Load上看到它? – Bill 2012-07-27 20:39:08

+1

通常你从ViewState中恢复,所以你最初的填充代码应该被包装在!Page.IsPostBack的检查中。 – 2012-07-27 20:41:17

0

确保在保存更改后再次调用Binding方法?如果没有,您的页面会回发,但使用它保存更改前的原始ViewState。一个典型的过程看起来像这样。

// In your page load 
if (!Page.IsPostBack()) 
{ 
    BindData(); // This calls the binding method the first time you hit the page. 
} 

// In your button click event 
if (Page.IsValid()) 
{ 
    UpdateData(); 
    BindData(); // If you don't call this method, you'll post back, but not rebind. 
} 

// In your BindData method 
txtThis.Text = data.this; 
txtThat.Text = data.that; 
0

事实证明,我正在重新加载控件的事件,它刷新数据,然后它击中Page_Load。

相关问题