【问题标题】:How can I Browse (only) checkbox in a panel?如何在面板中浏览(仅)复选框?
【发布时间】:2012-03-07 11:34:50
【问题描述】:

我有这个代码:

foreach (MyObject object in MyObject)
{
    Literal checkBoxStart = new Literal();
    Literal checkBoxEnd = new Literal();
    checkBoxStart.Text = "<div class=\"item\">";
    checkBoxEnd.Text = "</div>";

    CheckBox chb = new CheckBox();
    chb.InputAttributes.Add("value", object.UniqueID);
    chb.Text = object.Title;
    panelLocalita.Controls.Add(checkBoxStart);
    panelLocalita.Controls.Add(chb);
    panelLocalita.Controls.Add(checkBoxEnd);
}

比,在cmdSend_Click(object sender, EventArgs e) 方法上,我想浏览面板,只检查Checkboxs。我该怎么做?

【问题讨论】:

  • 浏览面板是什么意思?

标签: asp.net checkbox webforms panel


【解决方案1】:

假设我理解您所说的浏览是什么意思,您可以执行以下操作:

foreach (CheckBox chb in panelLocalita.Controls.OfType<CheckBox>())
{
}

您必须有一个 using System.Linq 才能完成这项工作。

【讨论】:

  • 我已经修改了,抱歉忘记没有键入 Controls 属性。
【解决方案2】:

您可以深入了解 Linq 工具箱。 IEnumerable 上有一些方法可以工作,并且由于 ControlsCollection 实现了该接口,因此您可以直接在集合上使用它们。其中一种方法非常适合您的需求。 扩展方法OfType&lt;TResult&gt;() 将迭代集合并仅返回那些属于提供类型的元素。

要获取所有复选框,您可以执行以下操作:

var checkboxes = panelLocalita.Controls.OfType<CheckBox>();

如果您希望产生副作用,例如将所有设置为选中,则可以通过 foreach 进行迭代

foreach(var checkBox in checkboxes)
{
    checkBox.Checked = true;
}

或者如果您需要从他们那里获取信息,您可以使用 Linq 工具箱中的更多工具,例如,如果您只想获取那些被选中的:

checkboxes.Where(c=>c.Checked)

或检查是否全部检查

checkboxes.All(c=>c.Checked)

【讨论】:

    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2013-12-30
    • 1970-01-01
    相关资源
    最近更新 更多