我有一个40-50左右的复选框集合,我为每个复选框设置了一个属性'attr-ID',这是数据库中唯一的值ID。如何通过c#代码中的属性名称获取控件。我想根据页面加载事件的dB值检查一些复选框。
<input type="checkbox" id="rdCervical" attr-ID='111' runat='server' />
答案 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元素。