ASP.NET UserControl在事件发生后没有更新

时间:2009-09-17 16:21:19

标签: c# asp.net event-handling page-lifecycle

我有一个asp.net控件,表示一个表和一个表示表中一行的控件。每行包含日期的文本字段和提交输入日期的按钮。

<asp:TextBox ID="TextBox" runat="server"/>
<asp:ImageButton ID="SubmitButton" onclick="SubmitButton_Click" runat="server" />

该按钮触发一个触发数据库更新的事件。

protected void SubmitButton_Click(object sender, EventArgs e)
{
    //Validate information in TextBox
    //Submit to database
}

这会导致根据在文本框中输入的信息显示一组新行。但是,除非我强制页面刷新,否则不会显示更新的信息。我怀疑这是因为事件处理落在asp.net页面/控件生命周期中。尽管我可以告诉在实际触发事件之前将值加载到行中,这会导致它们获取旧值而不是它们应该具有的新值。

我的问题是解决这个问题的最佳方法是什么?我假设它会像检查它是否是页面加载事件中的回发并且不加载用户控件行而是导致它们加载或以某种方式从事件刷新但我不确定应该是什么看起来像。

编辑:我想我需要调用在Page_Load中调用的相同函数,但我不知道如何从自定义控件中获取它。我猜。

2 个答案:

答案 0 :(得分:3)

我认为你需要在事件发生后重新绑定你的网格。

答案 1 :(得分:1)

正如Locksfree所说,重新绑定是你可能正在寻找的东西。

除非您通过调用asp.net对象的DataBind()专门请求新数据,否则回发不会自动显示新数据。

如果您要动态创建表,则必须重新运行代码才能重新生成表以获取新数据。根据它的构建方式,您可以通过部分重新加载新数据来逃脱。