CheckedChanged事件未被触发。

6
在我的WebForm中,当用户勾选一个产品时,我希望总价会改变,但是我的代码出现了问题。当我勾选CheckBox时,CheckedChanged事件没有触发。只有在我点击Button(用于清除按钮)时才会触发,而我没有将该代码包含在按钮事件中!以下是我的代码:
public partial class _Default : System.Web.UI.Page
{
    int total = 0;
    String strtotal;

    protected void ckb1_CheckedChanged(object sender, EventArgs e)
    {            
        if (ckb1.Checked)
        {                
            total = total + 100;
            strtotal = total.ToString();
            lbl2.Text = strtotal;
        } 

    }

    protected void ckb2_CheckedChanged(object sender, EventArgs e)
    {
        if (ckb2.Checked)
        {
            total = total + 80;
            strtotal = total.ToString();
            lbl2.Text = strtotal;
        }
    }

    protected void ckb3_CheckedChanged(object sender, EventArgs e)
    {
        if (ckb3.Checked)
        {
            total = total + 70;
            strtotal = total.ToString();
            lbl2.Text = strtotal;
        }
    }

    protected void Button3_Click(object sender, EventArgs e)
    {
        TextBox1.Text = " ";
        ckb1.Checked = false;
        ckb2.Checked = false;
        ckb3.Checked = false;    
    }

}
1个回答

12

除了ButtonHyperlinkLinkButton之外,所有ASP.NET服务器控件的默认AutoPostBack属性都为false,因此您应该在CheckBox中设置AutoPostBack="true"

<asp:CheckBox ID="ckb1" runat="server" AutoPostBack="true" OnCheckedChanged="ckb1_CheckedChanged" />

只有当我点击按钮时它才会触发

正如我所说,这是因为默认情况下Button具有AutoPostBack属性为true,所以在您勾选了CheckBox然后单击按钮后,CheckBox状态将自动回传到服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接