计时器上的ASP.NET刷新页面;在计时器之间查询数据库

时间:2017-11-23 06:14:10

标签: asp.net vb.net timer asp.net-webpages

'我脑子里有一个解决方案,但我不确定它是否可以在ASP.NET中使用。我没有很多定时器的经验。我的想法如下:

'Code Behind
'At the end of the timer(lets say 1 minute)
    Dim qry = "SELECT ISNULL(Value, '') FROM Database.Schema.Table WHERE 
               Column = @Something"

    'set up sql connection and execute query
    Using sqlcon as new SQLConnection() 'Don't focus on this part
        Using sqlcmd = New SQLCommand(sqlcon,qry) 'Don't focus on this part either syntax is probably incorrect
            sqlcmd.Parameters.Add("Something", VarChar)
            sqlcmd.Parameters("Something").Value = "Row Found"

            'Refresh page; assign label control on .aspx page to value of returned query 
            'SafeToString() is a function that will safely return a string whether the value is some string, DBNULL, Nothing, or ''

             lblString.Text = SafeToString(sqlcmd.ExecuteScalar())
        End Using
    End Using

我希望能够在保持滚动位置的同时做到这一点。所以我不打断用户正在做的工作/浏览。

感谢大家的投入!

2 个答案:

答案 0 :(得分:1)

我从未使用过WebForms(我假设这个问题是关于的),但不管我认为你是以错误的方式解决问题。页面刷新具有破坏性和分散注意力,当页面刷新时,浏览器必须再次获取页面(这包括所有资源和脚本)并重新呈现页面。

客户端实现

因此,必须在客户端实施解决方案,而不需要完整页面刷新,这可以使用Javascriptajax(来自Wikipedia)请求来实现。 简而言之,ajax是一种在页面加载和运行时向Web服务器发出附加请求的机制。这样,您可以在后台获取新数据,而不会中断用户。

  1. 页面加载时设置超时或interval

    let intervalId = setInterval(updateFromServer, 1000);
    

    此间隔将每1秒(1000毫秒)调用updateFromServer

  2. 定义函数updateFromServer

    function updateFromServer() {
        let newData = fetchData();
        updateData(newData);
    }
    

    此功能按我们设置的时间间隔调用,并执行两项操作:它从服务器获取新数据并使用updateData将其推送到DOM。

  3. 您可以使用ajax(例如使用jquery)来获取数据:

    function fetchData() {
        return $.ajax({ 
            type: "GET", 
            url: remote_url, 
            async: false 
        }).responseText;
    }
    

    这是ajax的用武之地,上面的行使用jquery ajax api向网址GET的服务器发送remote_url请求。浏览器发出请求并等待服务器响应。

  4. 最后更新页面(我再次使用jquery):

    function updateData(newData) {
        $('#data-el').text(newData)
    } 
    

    我们再次在这里使用jquery(你可以使用纯javascript)来查找ID为data-el的元素并将其内容设置为newData

答案 1 :(得分:1)

查找Page Methods。 JS可以调用一个代码隐藏方法,该方法可以向js方法返回一个值,然后可以更新页面。后面的代码方法不能直接访问页面,只返回一个值到js方法。