2010-09-02 42 views
0

在我的aspx頁面中,我有許多下拉控件。試圖弄清楚如何動態更新ASP控件的屬性?

我想與下面的行與以更新每個控件的屬性「類= leftColumn」:

propertyID.Attributes["nameOfAttribute"] = "false"; 

但是,而不是手動地寫出每個控件ID和上面的線設置其屬性,我希望有一種方法可以通過並在每個控件ID上設置屬性,如果它具有class = leftcolumn。

這事我知道是很容易使用jQuery,但我需要用後面的代碼(C#)

有人告訴我,這是不可能做到這一點(即收購所有列表控件,然後遍歷列表,並給它的屬性或任何其他方式,即手動設置像上面的例子中,每個控制在ASP.NET的唯一途徑。

感謝,

回答

2

爲此使用LINQ。您可以定義一個擴展方法來提供幫助。 ControlCollection需要一些幫助。喜歡的東西:

foreach (DropDownList dd in this.Controls 
           .All() 
           .OfType<DropDownList>() 
           .Where(c => c.Attributes["foo"] == "bar")) 
{ 
    // do something    
} 

... 

//define the extension method. 
public static IEnumerable<Control> All(this ControlCollection controls) 
{ 
    foreach (Control control in controls) 
    { 
     foreach (Control grandChild in control.Controls.All()) 
      yield return grandChild; 

     yield return control; 
    } 
} 

Kudos to David Findley at his ASP.NET blog

0

你不提如果下拉列表至少包含在一些常見的容器中以幫助查找它們,如果不是,則a nd你需要從字面上掃描整個頁面的任何這樣的下拉列表,然後我建議創建一個遞歸方法,從頁面級開始並枚舉兒童的控制集合和兒童的孩子等,並分析每個找到的控件。