'我脑子里有一个解决方案,但我不确定它是否可以在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
我希望能够在保持滚动位置的同时做到这一点。所以我不打断用户正在做的工作/浏览。
感谢大家的投入!
答案 0 :(得分:1)
我从未使用过WebForms(我假设这个问题是关于的),但不管我认为你是以错误的方式解决问题。页面刷新具有破坏性和分散注意力,当页面刷新时,浏览器必须再次获取页面(这包括所有资源和脚本)并重新呈现页面。
因此,必须在客户端实施解决方案,而不需要完整页面刷新,这可以使用Javascript
和ajax(来自Wikipedia)请求来实现。
简而言之,ajax
是一种在页面加载和运行时向Web服务器发出附加请求的机制。这样,您可以在后台获取新数据,而不会中断用户。
页面加载时设置超时或interval:
let intervalId = setInterval(updateFromServer, 1000);
此间隔将每1秒(1000毫秒)调用updateFromServer
。
定义函数updateFromServer
:
function updateFromServer() {
let newData = fetchData();
updateData(newData);
}
此功能按我们设置的时间间隔调用,并执行两项操作:它从服务器获取新数据并使用updateData
将其推送到DOM。
您可以使用ajax(例如使用jquery)来获取数据:
function fetchData() {
return $.ajax({
type: "GET",
url: remote_url,
async: false
}).responseText;
}
这是ajax的用武之地,上面的行使用jquery ajax api向网址GET
的服务器发送remote_url
请求。浏览器发出请求并等待服务器响应。
最后更新页面(我再次使用jquery):
function updateData(newData) {
$('#data-el').text(newData)
}
我们再次在这里使用jquery(你可以使用纯javascript)来查找ID为data-el
的元素并将其内容设置为newData
。
答案 1 :(得分:1)
查找Page Methods
。 JS可以调用一个代码隐藏方法,该方法可以向js方法返回一个值,然后可以更新页面。后面的代码方法不能直接访问页面,只返回一个值到js方法。