0

我在 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

随着复选框数量的增加,代码正在扩展并且变得更加冗余。

任何人都可以协助制定通用代码以避免冗余。欣赏是否可以提供伪代码。

谢谢你。

4

2 回答 2

0

对所有复选框使用相同的事件。然后,您可以sender转换为CheckBox触发事件的那个。

如果每个面板对应一个复选框,您可以使用复选框的名称命名面板,并以“面板”为后缀。例如,一个被调用的复选框chkDevalidate可能有一个面板被调用chkDevalidatePanel,下面的方法应该适用于你的所有复选框。Dictionary如果同一个面板被多个复选框显示或隐藏,您需要使用 a或类似的方法将它们相互映射。

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;
    }
}
于 2013-10-24T18:04:27.380 回答
0

或没有如果。

panel.Visible = checkbox.Checked
于 2013-10-24T18:09:56.527 回答