在回发后没有调用OnCheckedChanged

时间:2015-07-31 15:59:06

标签: c# asp.net .net

我是一名新开发人员,我想要完成的是隐藏底部DIV中的单选按钮,单击时显示btnSetFinishState显示底部DIV(它从后面的代码中执行)。但单击时单选按钮不会触发方法背后的代码。

这是.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
}

2 个答案:

答案 0 :(得分:0)

我在我的机器上运行了你的代码,发现事件正在准确发射。 因此,我认为您的环境与我的环境之间的差异可能是&lt;%@ Page 指令,并且缺少 AutoEventWireup =&#34; true&#34; 属性。

请分享您的Asp.net版本和项目信息,例如 是否有任何母版页。

<强>更新 请在visual studio中创建一个新的示例Web表单应用程序,然后添加一个新的Web表单,例如&#39; form1&#39;,将您的aspx和代码粘贴到新添加的&#39; form1&#39;中。测试,如果成功,那么检查aspx和后面的代码与现有项目的区别。也请告诉我们。

答案 1 :(得分:0)

是否有理由将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");
    }