.net 在加载页面之前更新数据

.net 在加载页面之前更新数据,.net,asp.net,.net,Asp.net,我有一个包含控件的页面。此控件在页面上重复多次,显示来自数据库的不同数据。最终的结果类似于一个数据表,我可以扩展div以在某种控制面板中显示更多的数据。每个“行”都有一个按钮,它从该特定行的输入中获取值,并用这些值更新数据库 我面临的问题是,在表单提交时,页面的页面加载发生在控件的更新方法触发之前(页面加载>提交>再次页面加载>触发更新方法),因为需要再次加载控件。虽然该方法按预期工作(因为输入值在页面加载之间保持),但页面内容显示原始输入值,我希望它显示从数据库获取的更新值(如果可能,我希望避

我有一个包含控件的页面。此控件在页面上重复多次,显示来自数据库的不同数据。最终的结果类似于一个数据表,我可以扩展div以在某种控制面板中显示更多的数据。每个“行”都有一个按钮,它从该特定行的输入中获取值,并用这些值更新数据库

我面临的问题是,在表单提交时,页面的页面加载发生在控件的更新方法触发之前(页面加载>提交>再次页面加载>触发更新方法),因为需要再次加载控件。虽然该方法按预期工作(因为输入值在页面加载之间保持),但页面内容显示原始输入值,我希望它显示从数据库获取的更新值(如果可能,我希望避免将其作为单独的计算进行更改)

e、 g.一个输入包含要支付的金额,例如500。如果我输入200,该方法将存储200作为付款,数据库将更新为显示剩余300,但之后的页面加载仍将显示500,因为提取数据的方法是在更新方法之前调用的


如何确保在再次加载页面之前,启动特定行的更新方法

听起来您需要在将数据绑定到页面之前检查是否发生回发。差不多

在页面加载方法中,将数据获取逻辑包装在

if(!Page.IsPostback)
{    
  // fetch data
}

听起来您只需要在更新后重新绘制控件。我将把生成控件的逻辑放在它自己的方法中,并在Page_Load和更新后调用该方法


另一个选项是仅在页面尚未回传时设置控件的值。如果不在回发时再次设置值,则存储在ViewState中的任何内容都应填充到字段中。

如果动态创建用户控件,则需要在每次回发时重新创建它们,但不希望在每次回发时加载数据,请执行以下操作

aspx:我有一个面板,需要动态添加用户控件

    <asp:Panel ID="Panel1" runat="server">
    </asp:Panel>
    <asp:Button ID="Button1" runat="server" Text="Button" />

当我点击按钮时,它将返回服务器并再次创建动态控件,并从视图状态绑定文本。

谢谢您的建议。在与同事协商后,我决定使用Jquery AJAX方法和Webmethods来动态提交和更新界面。

更新是如何处理的,在哪里处理的?该方法位于控件本身的代码隐藏中。我现在没有时间检查,但在页面生命周期中有一个很好的解释,您可以请参阅页面/控件生存期内生成的事件序列。看这里
protected void Page_Load(object sender, EventArgs e)
{
    //create your control on every time
    TextBox TextBox1 = new TextBox();
    TextBox1.ID = "TextBox1";
    Panel1.Controls.Add(TextBox1);

    if (Page.IsPostBack)
    {
        TextBox1.Text = "bind on fist time";
        // bind data here..
        // only the fist time
    }
}