复选框控件的 AsyncPostBackTrigger 未触发
AsyncPostBackTrigger for Checkbox control not firing
问题背景:
我有一个复选框和一个按钮。该按钮在页面加载时被禁用并显示为灰色。如果选中,我希望复选框启用并为按钮重新着色,如果未选中则恢复更改。将其视为用户协议页面,用户在其中接受条款并需要单击复选框以继续。
页面上方有一个网格视图和其他组件会在回发时中断,因此在线搜索我发现我可以使用 UpdatePanel。认为这比为复选框编写 jQuery 更简单,但它不起作用
代码:
ASPX
<asp:UpdatePanel ID ="upCheckbox" runat="server">
<ContentTemplate>
<asp:CheckBox ID="checkLabel" runat="server" OnCheckedChanged="checkLabel_CheckedChanged"/><asp:Label ID="AknowledgementLabel" runat="server" Text="Info is correct & Enable button"></asp:Label>
<br /><br />
<asp:Button ID="btnSubmit" Text="Submit Application" CssClass="jqbutton" OnClick="btnSubmit_Click" runat="server"/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="checkLabel" EventName="CheckedChanged"/>
</Triggers>
</asp:UpdatePanel>
隐藏代码:
protected void Page_Load(object sender, EventArgs e)
{
btnSubmit.Enabled = false;
btnSubmit.ForeColor = System.Drawing.Color.Gray;
}
protected void checkLabel_CheckedChanged(object sender, EventArgs e)
{
if (checkLabel.Checked)
{
btnSubmit.Enabled = true;
btnSubmit.ForeColor = System.Drawing.ColorTranslator.FromHtml("#336699");
}
else
{
btnSubmit.Enabled = false;
btnSubmit.ForeColor = System.Drawing.Color.Gray;
}
}
问题:
复选框不起作用,提交按钮保持禁用状态。不确定我是否出于适当的目的使用更新面板,或者是否遗漏了什么。是否可以按照我尝试的方式完成此操作,或者我应该继续 jQuery?
您的 CheckBox 控件中缺少 AutoPostback="true"
。默认设置为 false
。由于缺少自动回传,您的事件将无法到达服务器端。
<asp:UpdatePanel ID ="upCheckbox" runat="server">
<ContentTemplate>
<asp:CheckBox ID="checkLabel" runat="server" AutoPostback="true" OnCheckedChanged="checkLabel_CheckedChanged"/>
<asp:Label ID="AknowledgementLabel" runat="server" Text="Info is correct & Enable button"></asp:Label>
<br /><br />
<asp:Button ID="btnSubmit" Text="Submit Application" CssClass="jqbutton" OnClick="btnSubmit_Click" runat="server"/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="checkLabel" EventName="CheckedChanged"/>
</Triggers>
</asp:UpdatePanel>
问题背景:
我有一个复选框和一个按钮。该按钮在页面加载时被禁用并显示为灰色。如果选中,我希望复选框启用并为按钮重新着色,如果未选中则恢复更改。将其视为用户协议页面,用户在其中接受条款并需要单击复选框以继续。
页面上方有一个网格视图和其他组件会在回发时中断,因此在线搜索我发现我可以使用 UpdatePanel。认为这比为复选框编写 jQuery 更简单,但它不起作用
代码:
ASPX
<asp:UpdatePanel ID ="upCheckbox" runat="server">
<ContentTemplate>
<asp:CheckBox ID="checkLabel" runat="server" OnCheckedChanged="checkLabel_CheckedChanged"/><asp:Label ID="AknowledgementLabel" runat="server" Text="Info is correct & Enable button"></asp:Label>
<br /><br />
<asp:Button ID="btnSubmit" Text="Submit Application" CssClass="jqbutton" OnClick="btnSubmit_Click" runat="server"/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="checkLabel" EventName="CheckedChanged"/>
</Triggers>
</asp:UpdatePanel>
隐藏代码:
protected void Page_Load(object sender, EventArgs e)
{
btnSubmit.Enabled = false;
btnSubmit.ForeColor = System.Drawing.Color.Gray;
}
protected void checkLabel_CheckedChanged(object sender, EventArgs e)
{
if (checkLabel.Checked)
{
btnSubmit.Enabled = true;
btnSubmit.ForeColor = System.Drawing.ColorTranslator.FromHtml("#336699");
}
else
{
btnSubmit.Enabled = false;
btnSubmit.ForeColor = System.Drawing.Color.Gray;
}
}
问题:
复选框不起作用,提交按钮保持禁用状态。不确定我是否出于适当的目的使用更新面板,或者是否遗漏了什么。是否可以按照我尝试的方式完成此操作,或者我应该继续 jQuery?
您的 CheckBox 控件中缺少 AutoPostback="true"
。默认设置为 false
。由于缺少自动回传,您的事件将无法到达服务器端。
<asp:UpdatePanel ID ="upCheckbox" runat="server">
<ContentTemplate>
<asp:CheckBox ID="checkLabel" runat="server" AutoPostback="true" OnCheckedChanged="checkLabel_CheckedChanged"/>
<asp:Label ID="AknowledgementLabel" runat="server" Text="Info is correct & Enable button"></asp:Label>
<br /><br />
<asp:Button ID="btnSubmit" Text="Submit Application" CssClass="jqbutton" OnClick="btnSubmit_Click" runat="server"/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="checkLabel" EventName="CheckedChanged"/>
</Triggers>
</asp:UpdatePanel>