我在ASP.Net页面中有一系列复选框。每个复选框都调用单个函数,该函数接受复选框id作为参数。
问题是代码现在是多余的。有没有办法概括代码。附上以下示例代码:
protected void chkAddlDetails_CheckedChanged(object sender, EventArgs e)
{
if (chkAddlDetails.Checked == true)
{
blnShouldLock("chkAddlDetails");
Panel9.Visible = true;
}
else
{
Panel9.Visible = false;
}
}
protected void chkDeValidate_CheckedChanged(object sender,EventArgs e)
{
if (chkDeValidate.Checked == true)
{
blnShouldLock("chkDeValidate");
Panel10.Visible = true;
}
else
{
Panel10.Visible = false;
}
}
............
............ and similar code repeats for other check boxes
随着复选框数量的增加,代码正在扩展并变得更加冗余。
任何人都可以协助使用通用代码来避免冗余。感谢是否可以提供伪代码。
谢谢。
答案 0 :(得分:0)
对所有复选框使用相同的事件。然后,您可以将sender
投射到触发事件的CheckBox
。
如果每个面板对应一个复选框,则可以使用复选框的名称命名面板,并使用“面板”将其后缀。例如,名为chkDevalidate
的复选框可以有一个名为chkDevalidatePanel
的面板,以下方法适用于所有复选框。如果同一个面板被多个复选框显示或隐藏,您需要使用Dictionary
或类似的方式在彼此之间映射它们。
protected void GenericCheckedChanged(object sender, EventArgs e)
{
CheckBox checkbox = (CheckBox)sender;
Panel panel = (Panel)Page.FindControl(checkbox.ID + "Panel");
if (checkbox.Checked)
{
blnShouldLock(checkbox.ID);
panel.Visible = true;
}
else
{
panel.Visible = false;
}
}
答案 1 :(得分:0)
或没有if。
panel.Visible = checkbox.Checked