ASP.计数复选框控件,基于CSS类或另一个ID字段

本文关键字:另一个 ID 字段 CSS 基于 复选框 控件 ASP | 更新日期: 2023-09-27 18:02:31

我试图计算页面上的所有复选框控件,我希望能够根据它们是什么css类来计算它们(或任何其他ID字段,我可以用来分组ValidationGroup等)。我对c#还是个新手。下面是我的代码:

    protected void submitButton_Click(object sender, EventArgs e)
    {
        int numCbSelected = 0;
        foreach (CheckBox cb in Page.Controls)
        {
            numCbSelected = numCbSelected + 1;
        }
        errLabel.Text = numCbSelected.ToString();
    }

ASP.计数复选框控件,基于CSS类或另一个ID字段

你必须做某种形式的递归来获得页面上所有的复选框

private int CountCheckboxes(Control control)
    {
        CheckBox checkBox = control as CheckBox;
        int count = 0;
        if (checkBox != null)
        {
            if(checkBox.CssClass == "SomeClass")
                count++;
        }
        foreach (Control child in control.Controls)
        {
            count += CountCheckboxes(child);
        }
        return count;
    }

然后叫它

protected void submitButton_Click(object sender, EventArgs e)
{
    int numCbSelected = CountCheckboxes(Page)
    errLabel.Text = numCbSelected.ToString();
}

CSS是一种客户端技术。如果你想通过CSS计算复选框,它必须在客户端(即JavaScript)完成。我不认为您可以在代码中使用foreach。在最好的情况下,它会使所有控件都成为一个复选框(也许它们是?),在最坏的情况下,它会失败。

遍历Page.Controls中的控件。然后检查控件的类型。没有实际编码,它类似于:

foreach(Control cb in Page.Controls)
{
   if(cb.GetType() == typeof(CheckBox))
   {   //do something here
   }
}

这是粗略的,你可能需要调整它,但你可以这样设置你的计数