【问题标题】:how to see DB changes without refreshing page in ASP.NET C#如何在 ASP.NET C# 中查看数据库更改而不刷新页面
【发布时间】:2013-06-12 19:57:35
【问题描述】:

我有这个按钮事件:

protected void AddDetails_Click(object sender, EventArgs e)
    {


        DataSetTableAdapters.SelectFriendsTableAdapter sft = new DataSetTableAdapters.SelectFriendsTableAdapter();
        try
        {
            sft.AddFriend(current, newFriend, false);
        }
        catch
        {
            error.Text = "Something happened. Bummer!";
        }

    }

try 部分,我在数据库中添加条目。在页面中有对应值的标签/文本框。

一切正常。但是,单击此提交按钮后,我需要刷新页面才能看到更改。

我已经在 PageLoad 代码的开头添加了if(!IsPostBack),但我仍然需要访问另一个页面/回来查看更改。

有什么想法吗?

谢谢。


感谢您的回复。我正在使用 ListView:

protected void Page_Load(object sender, EventArgs e)
    {
     if (!IsPostBack)
        {
            DataSetTableAdapters.SelectFriendsTableAdapter sdt = new DataSetTableAdapters.SelectFriendsTableAdapter();
            DataTable tab = sdt.SelectFriends();
            ListView1.DataSource = tab;
            ListView1.DataBind();

        }
    }

,所以 ListView 内容应该得到更新。

【问题讨论】:

  • 究竟应该改变什么?文本框中的值?您有要刷新的网格吗?
  • 什么将值绑定到页面上的标签/文本框?此外, if(!IsPostBack) 只会执行一次逻辑,因为初始页面加载是唯一一次不是回发,后续对页面的请求而不导航到其他地方被视为回发。您想要的是在成功完成数据库更新(您发布的代码中的尝试逻辑)后触发将值绑定到页面上的控件(标签/文本框)的机制。

标签: c# asp.net refresh pageload ispostback


【解决方案1】:

如果您不想刷新页面并且您正在使用 asp.net 网络表单,您可以使用 UpdatePanel 并将所有控件放在其中等等...这将保留表单中所做的更改 /提交信息时显示。我假设表单正在提交更改/新数据,因为您没有具体说明数据是如何更新/更改的。

如果您不想使用更新面板,那么当页面回发时,您必须使用“newFriend”对象(I' m 假设有改变的值)。

【讨论】:

    【解决方案2】:

    找到了!

    这个问题的解决方案是在提交按钮点击事件的末尾添加这段代码:

    Server.Transfer("currentpage.aspx");
    

    【讨论】:

    • 那是错误的做法——当你这样做时,你正在执行页面两次。这绝对不是正确的方法。仅仅因为你可以用脚开车并不意味着你应该;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多