2011-12-22 73 views
4

我有一個複選框的集合一些40-50 nos,我已經爲每個複選框設置屬性'attr-ID',這是數據庫中唯一的值標識。我怎麼能通過屬性名稱控制在C#代碼。我想根據頁面加載事件的dB值檢查一些複選框。獲取複選框通過在C#中的自定義屬性名稱控制

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

他們有runat =「server」屬性還是他們簡單的html元素? – 2011-12-22 13:54:44

+0

HTML5允許以'data-'開頭的屬性,但是對於其他任何我認爲您必須編寫自己的解析器的信息,恐怕。 – 2011-12-22 13:55:14

+0

是的,他們有runat服務器,但我不能在c中識別控制ID# – deepu 2011-12-22 14:00:10

回答

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元素。

+0

複選框ID無法檢查,因爲我有很多複選框我有一個共同屬性的所有複選框使用它我需要確定哪個複選框需要檢查 – deepu 2011-12-23 04:06:21

+0

我假設你正在以編程方式添加複選框。在這種情況下,製作一個容器'

'並將其所有複選框放入其中。然後使用'checkContainer.InnerHtml'並用這個庫解析這些代碼。然後,您可以輕鬆使用庫API按屬性查找元素。 http://htmlagilitypack.codeplex.com/ – 2011-12-23 04:10:45

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; 
} 
+0

他沒有使用服務器控件,但html控件'HtmlInputCheckBox' – 2011-12-22 14:33:46

+1

這是他想要的嗎? – Arion 2011-12-22 14:43:01

+0

im使用html控件而不是服務器控件... – deepu 2011-12-23 04:07:22