如何使用autopostback进行计算,因此没有屏幕闪烁

时间:2012-11-02 15:59:02

标签: javascript jquery asp.net

每当用户从Web表单上的下拉列表中选择一个数字时,我都会有一个表单执行自动后备。 autopostback运行下面的代码来计算表单的编号。

截图:

enter image description here

问题是我每次都会在屏幕上看到一个令人讨厌的闪烁重新计算/自动回复。

是否有其他方法可以对此进行编码以阻止闪烁?

C#

protected void Page_Load(object sender, EventArgs e)
{

    int intNum1 = 0;
    int intNum2 = 0;
    int intNum3 = 0;
    int totalt = 0;

    intNum1 = int.Parse(ddlNoadults.SelectedValue);
    intNum2 = int.Parse(ddlNoseniors.SelectedValue);
    intNum3 = int.Parse(ddlNochildren.SelectedValue);

    totalt = (intNum1 * 10) + (intNum2 * 8) + (intNum3 * 6);

    tbTotal.Text = totalt.ToString();

}

此致

3 个答案:

答案 0 :(得分:2)

使用UpdatePanel和AJAXing,计算应删除或至少大幅减少闪烁。

http://www.asp.net/ajax/documentation/live/overview/UpdatePanelOverview.aspx

答案 1 :(得分:1)

你可以用jquery / javascript来做。本教程how to start jquery将为您提供帮助。

$('#<%= ddlNoadults.ClientID &>', '#<%= ddlNoadults.ClientID &>', 
'#<%=ddlNoadults.ClientID &>').change(function(){
        calculate();
});

function calculate(){
    num1 = parseInt($('#<%= ddlNoadults.ClientID &>').val());
    num2 = parseInt($('#<%= ddlNoseniors.ClientID &>').val());
    num3 = parseInt($('#<%= ddlNochildren.ClientID &>').val());
    totalt = (num1 * 10) + (num2 * 8) + (num3 * 6);
    $('#<%= tbTotal.ClientID &>').val(totalt) 
}

$(document).ready(function(){
     calculate();
});

答案 2 :(得分:0)

假设您可以依赖于在浏览器中启用了javascript的用户,这是一个简单的客户端解决方案。

只需附加一个函数,该函数将所选值与您想要触发计算的每个ddl的更改事件相加...

$("#id-of-ddl").change(callyoursumfunctionhere);