我正在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;
答案 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不会帮助您在选中复选框时运行某些代码