回发后未调用OnCheckedChanged

本文关键字:调用 OnCheckedChanged | 更新日期: 2023-09-27 18:05:42

我是一个新的开发人员,我想要完成的是隐藏在底部div和btnSetFinishState的单选按钮,当点击显示底部div(这是从后面的代码)。但是,当单击单选按钮时,不会触发code behind方法。

这里是。aspx:

<div class="row">
   <asp:Button ID="btnSetFinishState" runat="server" Text="FINISHED" OnClick="btnSetFinishState_Click" UseSubmitBehavior="False" Enabled="False" />
</div>
<div class="row" id="finishedBlock" runat="server" visible="false">
   <asp:Label ID="lblSetFinishText" runat="server" Text="Are you sure you want to set state to finished?" />
   <div data-toggle="buttons" id="divRadioButtons">
      <label id="btnFinishyes" class="btn btn-default col-sm-6 col-xs-6">
         <asp:RadioButton ID="finishyes" Text="Yes" GroupName="finish" runat="server" AutoPostBack="true" OnCheckedChanged="finishyes_CheckedChanged" />
      </label>
      <label id="btnFinishno" class="btn btn-default col-sm-6 col-xs-6">
         <asp:RadioButton ID="finishno" Text="No" GroupName="finish" runat="server"  AutoPostBack="true" OnCheckedChanged="finishno_CheckedChanged" />
      </label>
   </div>
</div>

aspx.cs代码:

protected void btnSetFinishState_Click(object sender, EventArgs e)
{
    // if neither radio button clicked
    if (!finishyes.Checked && !finishno.Checked)
    {
        finishedBlock.Visible = true; // show the radio button DIV
        //return;
    }
}
protected void finishno_CheckedChanged(object sender, EventArgs e)
{
    finishedBlock.Visible = false; // hide the radio buttons
    finishno.Checked = false; // reset the no button to false
}
protected void finishyes_CheckedChanged(object sender, EventArgs e)
{
     // set the finished state code
}

回发后未调用OnCheckedChanged

btnSetFinishState设置为Enabled="False"是否有原因?

因为我测试了这段代码,它可以工作

aspx代码

 <div class="row">
        <asp:Button ID="btnSetFinishState" runat="server" Text="FINISHED" OnClick="btnSetFinishState_Click" UseSubmitBehavior="False" Enabled="true" />
    </div>
    <div class="row" id="finishedBlock" runat="server" visible="false">
        <asp:Label ID="lblSetFinishText" runat="server" Text="Are you sure you want to set state to finished?" />
        <div data-toggle="buttons" id="divRadioButtons">
            <label id="btnFinishyes" class="btn btn-default col-sm-6 col-xs-6">
                <asp:RadioButton ID="finishyes" Text="Yes" GroupName="finish" runat="server" AutoPostBack="true" OnCheckedChanged="finishyes_CheckedChanged" />
            </label>
            <label id="btnFinishno" class="btn btn-default col-sm-6 col-xs-6">
                <asp:RadioButton ID="finishno" Text="No" GroupName="finish" runat="server" AutoPostBack="true" OnCheckedChanged="finishno_CheckedChanged" />
            </label>
        </div>
    </div>

aspx.cs

protected void btnSetFinishState_Click(object sender, EventArgs e)
    {
        // if neither radio button clicked
        if (!finishyes.Checked && !finishno.Checked)
        {
            finishedBlock.Visible = true; // show the radio button DIV
            //return;
        }
    }
    protected void finishno_CheckedChanged(object sender, EventArgs e)
    {
        finishedBlock.Visible = false; // hide the radio buttons
        finishno.Checked = false; // reset the no button to false
    }
    protected void finishyes_CheckedChanged(object sender, EventArgs e)
    {
        // set the finished state code
        Response.Redirect("WebForm2.aspx");
    }

我在我的机器上运行了你的代码,发现事件正在准确地发射。所以,我认为你的环境和我的环境之间的不同可能是<%@ Page</strong>指令和缺失的<strong>AutoEventWireup="true"</strong>属性。</p> <p>请分享您的Asp.net版本和项目信息,例如是否有母版页</p> <p> <strong>更新:</strong>请在visual studio中创建一个新的示例web表单应用程序,并添加一个新的web表单说'form1',将您的aspx和代码粘贴到新添加的'form1'。测试,如果成功,然后检查aspx和代码与现有项目的差异。</p> </div> </html>%>