在我的asp.net中使用ajax更新datagridview而不刷新页面。(显示实时数据)

时间:2010-03-05 03:16:12

标签: c# asp.net ajax

我需要显示来自MS SQL 2005的实时数据。我看到一些博客推荐Ajax来解决我的问题。基本上,现在我的default.aspx页面只是为了解决方法,我可以显示数据库中的数据。但是,一旦我手动将数据添加到我的数据库,就没有更新。任何建议家伙解决这个问题?我需要更新datagridview而不刷新页面。

这是我在Default.aspx.cs上的代码

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        FillDataGridView();
    }

    protected void up1_Load(object sender, EventArgs e)
    {
        FillDataGridView();
    }

    protected void FillDataGridView()
    {
        DataSet objDs = new DataSet();
        SqlConnection myConnection = new SqlConnection  (ConfigurationManager.ConnectionStrings["MainConnStr"].ConnectionString);
        SqlDataAdapter myCommand;
        string select = "SELECT * FROM Categories";
        myCommand = new SqlDataAdapter(select, myConnection);
        myCommand.SelectCommand.CommandType = CommandType.Text;
        myConnection.Open();
        myCommand.Fill(objDs);

        GridView1.DataSource = objDs;
        GridView1.DataBind();
    }
}

我的Default.aspx上的代码

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Ajax Sample</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
            <Scripts>
                   <asp:ScriptReference Path="JScript.js" />      
            </Scripts>
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="up1_Load">
            <ContentTemplate>
                <asp:GridView ID="GridView1" runat="server" Height="136px" Width="325px"/>
            </ContentTemplate>
                <Triggers> 
                    <asp:AsyncPostBackTrigger ControlID="GridView1" /> 
                </Triggers> 
        </asp:UpdatePanel>
    </form>
</body>
</html>

我现在的问题是如何调用或使用ajax.js以及如何编写代码来调用Default.aspx.cs页面中的FillDataGridView()。

谢谢你们,希望有人能帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

你会找到一个很好的指南here

请参阅代码示例here

更新: http://hubpages.com/hub/Automatic-Refresh-data-on-page-using-AJAX-update-panel

答案 1 :(得分:0)

您是说当数据库中的数据发生变化时,您希望在没有任何用户交互(如刷新按钮)的情况下实时更新页面?

我还没有做过这样的事情,但我想到的一种可能性是调用一个Web服务,它从你的页面Javascript(使用timer重复调用webservice)提供最新的数据集,如果数据发生了变化,导致异步回发(或使用另一个函数更新数据表中的相应值)。

然而,我不知道浏览器是否会顺利处理这样的事情,具体取决于您拥有的数据量。