获取复选框在C#中按自定义属性名称控制

时间:2011-12-22 13:49:30

标签: c# asp.net html

我有一个40-50左右的复选框集合,我为每个复选框设置了一个属性'attr-ID',这是数据库中唯一的值ID。如何通过c#代码中的属性名称获取控件。我想根据页面加载事件的dB值检查一些复选框。

 <input type="checkbox" id="rdCervical" attr-ID='111' runat='server' />

2 个答案:

答案 0 :(得分:6)

这是你想要的吗?

protected void Page_Load(object sender, EventArgs e)
{
    var cb = FindControlByAttribute<HtmlInputCheckBox>(this.Page, "attr-ID", "111");

}
public T FindControlByAttribute<T>(Control ctl, string attributeName, string attributeValue) where T : HtmlControl
{
    foreach (Control c in ctl.Controls)
    {
        if (c.GetType() == typeof(T) && ((T)c).Attributes[attributeName]==attributeValue)
        {
            return (T) c;
        }
        var cb= FindControlByAttribute<T>(c, attributeName, attributeValue);
        if (cb != null)
            return cb;
    }
    return null;
}

答案 1 :(得分:5)

if (rdCervical.Attributes["attr-ID"] != null)
{
      string id = rdCervical.Attributes["attr-ID"];
      rdCervical.Checked = true;
}

我假设您以编程方式添加复选框。在这种情况下,创建一个容器<div id="checkContainer" runat="server"></div>并将所有复选框放入其中。然后只需使用checkContainer.InnerHtml并使用this library解析该代码。然后,您可以轻松使用库API按属性查找元素,我认为该方法为SelectNodes

如果没有这个库,就没有简单的方法来从代码中导航HTML元素。