选中复选框后如何运行方法

时间:2015-08-06 17:22:28

标签: c# asp.net checkbox

我正在aspx页面上构建一个表单。我想运行一种方法,如果用户勾选一个标有“经常性捐赠”的复选框,会添加更多字段和标签?'

我的表格

        <telerik:LayoutRow CssClass="formContainer">
            <Columns>
                <telerik:LayoutColumn Span="12" SpanSm="12" SpanMd="12">
                    <asp:Label id="firstName" runat="server"></asp:Label>
                    <br />
                    <asp:TextBox runat="server" ID="UserFirstName"></asp:TextBox>
                </telerik:LayoutColumn>
                <telerik:LayoutColumn Span="12" SpanSm="12" SpanMd="12">
                    <asp:Label id="lastName" runat="server"></asp:Label>
                    <br />
                    <asp:TextBox runat="server" ID="UserLastName"></asp:TextBox>
                </telerik:LayoutColumn>
                <telerik:LayoutColumn Span="3" SpanSm="12" SpanMd="12">
                    <asp:Label id="address1" runat="server"></asp:Label>
                    <br />
                    <asp:TextBox runat="server" ID="userAddress1"></asp:TextBox>
                </telerik:LayoutColumn>
                <telerik:LayoutColumn Span="9" SpanSm="12" SpanMd="12">
                    <asp:Label id="address2" runat="server"></asp:Label>
                    <br />
                    <asp:TextBox runat="server" ID="userAddress2"></asp:TextBox>
                </telerik:LayoutColumn>
                <telerik:LayoutColumn Span="3" SpanMd="12" SpanSm="12">
                    <asp:Label ID="city" runat="server"></asp:Label>
                    <br />
                    <asp:TextBox runat="server" ID="userCity"></asp:TextBox>
                </telerik:LayoutColumn>
                <telerik:LayoutColumn Span="9" SpanMd="12" SpanSm="12">
                    <asp:Label ID="zip" runat="server"></asp:Label> 
                    <br />
                    <asp:TextBox ID="userZip" runat="server"></asp:TextBox>
                </telerik:LayoutColumn>
                <telerik:LayoutColumn>
                    <asp:Label ID="returningDonor" runat="server"></asp:Label>
                    <br />
                    <asp:CheckBox ID="userReturningDonor" runat="server" />
                </telerik:LayoutColumn>
            </Columns>
        </telerik:LayoutRow>

我的代码背后了

public partial class donationForm : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        firstName.Text = "First Name";
        lastName.Text = "Last Name";
        address1.Text = "Address 1";
        address2.Text = "Address 2";
        city.Text = "City";
        zip.Text = "Zip Code";
        returningDonor.Text = "Recurring Donation?";

        userReturningDonor.Checked = showRecuring();
    }
    static void showRecuring()
    {
        /*RUN CODE*/
    }
}

我得到的错误是

  

不能隐含转换类型&#39; void&#39;到了布尔&#39;

4 个答案:

答案 0 :(得分:2)

根据你想要完成的事情,这里有几件事要尝试:

单击复选框后会导致回复

如果您确实希望它在检查时回发并运行代码,我会这样做:

更新您的复选框,如下所示:

static bool showRecuring()
{
    /*RUN CODE*/
}

将此添加到后面的代码中:

<asp:CheckBox ID="userReturningDonor" runat="server" OnCheckedChanged="userReturningDonor_CheckedChanged" AutoPostBack="true" />

摆脱错误

如果您只想摆脱错误,但代码仍然按预期运行,那么您可以这样做:

protected void userReturningDonor_CheckedChanged(object sender, EventArgs e) { if (userReturningDonor.Checked) { MsgBox("Checked"); } else { MsgBox("Not checked"); } } 更改为static void showRecuring()

static bool showRecuring()期待donationForm在此行中返回showRecuring

boolean

但是,userReturningDonor.Checked = showRecuring(); showRecuring

这将消除您的错误,但如果您希望void根据showRecuring是否运行代码,那么您可以执行以下操作:

只需在userReturningDonor.Checked事件

中运行功能即可

Page_Load替换为userReturningDonor.Checked = showRecuring();

并定义showRecuring(userReturningDonor.Checked);,如下所示:

showRecuring

答案 1 :(得分:1)

您要将showRecurring()的返回值设置为checked的{​​{1}}属性,该属性需要bool。

userReturningDonor的返回类型更改为布尔值。

showRecurring()

答案 2 :(得分:1)

你的静态方法showRecuring没有返回任何值(比如bool),但是你在调用中正在使用它。

userReturningDonor.Checked = showRecuring();

static void showRecuring()

应该是

static bool showRecuring()

答案 3 :(得分:1)

Checked

是一个bool,用于获取或设置复选框的状态(选中或取消选中)。如果您想在选中此框时执行某些操作,则需要处理复选框的CheckedChanged事件。所以你想要像

这样的东西
 userReturningDonor.CheckedChanged += showRecuring(usinderReturningDonor, new EventArgs());

 static void showRecuring(object sender, EventArgs e)
{
    /*RUN CODE*/
}

编辑:为了清楚起见,复选框的Checked属性不是检查时的处理方式。它是如何判断当前是否已检查或如何设置它以进行检查或取消选中。

编辑2:正如其他人所指出的那样,你得到一个错误,因为Checked属性需要true或false,你的方法返回void。但是,更改方法以返回bool不会帮助您在选中复选框时运行某些代码