我有一个标签,我显示数字,数字是数据库中的数据计数。每当新数据保存在DB中时,标签中的数字应该增加。当我刷新页面时它会增加,因为我在codebehind中调用page_load上的方法。
我的想法是:
为此目的,我知道我应该使用AJAX,但我找不到合适的用法。
你能指导我一个解决方案吗?
这是aspx页面上的标签:
<div id="panoramCouponBarLittleTalep">
<asp:Label ID="LabelTalepSayisiSag" ClientIDMode="Static" Text="" runat="server" />
</div>
这是page_load:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["user"] != null)
{
if (!IsPostBack)
{
SonBesGunTalepSayisi();
}
}
}
我使用的方法:
private void SonBesGunTalepSayisi()
{
RequestProvider rP = new RequestProvider();
int talepSayisi = rP.LastFiveDaysRequestCount();
if (talepSayisi > 0)
{
LabelTalepSayisiSag.Text = talepSayisi.ToString();
}
else
{
LabelTalepSayisi.Text = "";
}
}
答案 0 :(得分:1)
我会使用ASP.NET AJAX页面方法作为JavaScript AJAX将根据计时器调用的服务器端点;像这样:
代码隐藏:
[WebMethod]
public static string GetRequestCount()
{
RequestProvider rP = new RequestProvider();
int talepSayisi = rP.LastFiveDaysRequestCount();
if (talepSayisi > 0)
{
return talepSayisi.ToString();
}
return "";
}
我会在CssClass
控件中添加Label
值,因为这样可以更轻松地在jQuery选择器中使用,如下所示:
标记:
<div id="panoramCouponBarLittleTalep">
<asp:Label ID="LabelTalepSayisiSag" ClientIDMode="Static"
Text="" runat="server" CssClass="TheLabel" />
</div>
$(document).ready(function() {
setInterval(ajaxCall, 5000); // 5000 MS == 5 seconds
});
function ajaxCall() {
$.ajax({
type: "POST",
url: "PageName.aspx/GetRequestCount",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
// Put result of call into label
$('.TheLabel').text(result);
}
});
}
注意:显然,您可以根据需要和性能将定时器间隔值调整为更大或更小。此外,CssClass
控件上的Label
值可避免困扰ASP.NET服务器控件的名称重整问题。即使您使用ClientIDMode="Static"
,我也希望尽可能避免在jQuery中使用服务器控件的ID,因为ASP.NET不会破坏类名。
答案 1 :(得分:0)
您可以使用ASP页面方法来执行此操作:
http://www.geekzilla.co.uk/View7B75C93E-C8C9-4576-972B-2C3138DFC671.htm