想要遍歷頁面上存在的所有用戶控件並獲取其ID。我該怎麼做?循環遍歷頁面上的所有用戶控件
回答
要獲得每個用戶控制,你必須測試控制的類型:
編輯:我修改我的例子去通過遞歸的所有控件:
方法
public void GetUserControls(ControlCollection controls)
{
foreach (Control ctl in controls)
{
if (ctl is UserControl)
{
// Do whatever.
}
if (ctl.Controls.Count > 0)
GetUserControls(ctl.Controls);
}
}
調用
GetUserControls(Page.Controls);
Nah。這不起作用 – 2010-04-13 19:00:00
什麼不適用於它?如果(curControl是UserControl)從不爲真,則爲 – CAbbott 2010-04-13 19:02:29
。並且我在頁面上有一個用戶控件 – 2010-04-13 19:06:33
foreach(Control control: Page.Controls)
{
//do something with control object
}
但是,它通過所有控件循環。用戶控件如何區分。的GetType()? – 2010-04-13 18:53:58
控件可以嵌套,因此您需要遞歸函數來遍歷所有控件。 – 2010-04-13 18:55:27
這應該工作:
var listOfUserControls = GetUserControls(Page);
...
public List<UserControl> GetUserControls(Control ctrl)
{
var uCtrls = new List<UserControl>();
foreach (Control child in ctrl.Controls) {
if (child is UserControl) uCtrls.Add((UserControl)child);
uCtrls.AddRange(GetUserControls(child);
}
return uCtrls;
}
我創建了一個擴展方法來做到這一點,這與LINQ真的很好的作品。
<Extension()>
Public Function DecendentControls(ParentControl As Control) As Control()
Dim controls As New List(Of Control)
For Each myControl As Control In ParentControl.Controls
controls.Add(myControl)
controls.AddRange(myControl.DecendentControls)
Next
Return controls.ToArray
End Function
然後用LINQ,你可以做這樣的事情在頁面上的所有複選框設置爲未選中:
For Each myControl As CheckBox In pnlMain.DecendentControls.Where(Function(x) TypeOf x Is CheckBox)
myControl.Checked = False
Next
- 1. 循環遍歷所有值
- 2. 沒有循環遍歷所有文件
- 3. 循環遍歷所有控件並清除所需
- 4. 循環遍歷角度對象上的所有控制器
- 5. 使用jQuery循環遍歷所有LI's
- 6. Python BeautifulSoup - 循環遍歷多個頁面
- 7. 循環遍歷Bash中的所有列
- 8. 循環遍歷UITableView中的所有UITextFields
- 9. 循環遍歷所有的記錄和
- 10. 循環遍歷類的所有對象
- 11. 如何在C#中循環遍歷所有ComboBoxes控件?
- 12. 循環遍歷RectangleShape控制
- 13. 循環遍歷所有工作表VBA
- 14. 循環遍歷所有組合
- 15. 循環遍歷所有main()參數
- 16. 如何循環遍歷所有路線?
- 17. 循環遍歷所有Unicode字符
- 18. Sqlite循環遍歷所有表
- 19. for循環不遍歷所有增量
- 20. For循環未遍歷所有數據
- 21. 循環遍歷所有用戶表,並在每個
- 22. Powerpoint VBA循環沒有循環遍歷所有幻燈片
- 23. Python for循環沒有循環遍歷所有項目
- 24. 使用'for'循環遍歷目錄中的所有文件
- 25. Excel宏:循環遍歷頁面時通過行循環
- 26. 循環遍歷R中的文件夾中的所有文件
- 27. 如何遍歷頁面中所有ASP.NET UpdatePanel中的所有控件?
- 28. php函數沒有循環遍歷所有用戶,只是第一個用戶
- 29. 循環遍歷所有具有特定擴展名的文件
- 30. Shellscript循環遍歷文件夾中的所有文件
這是的WinForms,WPF或ASP.NET?我懷疑後者,但你永遠不知道。 – ChrisF 2010-04-13 18:50:11
「用戶控件」是指*託管控件*還是特定用戶控件(.ascx)? – CAbbott 2010-04-13 18:51:06
@ChrisF:你猜對了! ASP.Net它是 @CAbbott:.ascx – 2010-04-13 18:51:36