如何从控件列表中获取Label文本

时间:2015-09-18 21:27:19

标签: c# asp.net detailsview

我想循环遍历ASP.Net DetailsView中的所有控件,并获取List中的所有Labels。然后我想对每个Label的文本做一些事情。我正在使用this question的第一个答案作为指导。它工作正常,但我无法访问Text的{​​{1}}属性,因为我正在创建一个Labels的列表,Controls没有Controls 1}}属性。这是我的代码:

Text

在调试器中,我可以看到每个List<Control> ControlsToCheck = GetAllLabelControls(dvPurchaseOrder).ToList(); foreach (Control c in ControlsToCheck) { c.Text = HighlightSearchTerms(c.Text, Request.QueryString["searchstring"]); } public static IEnumerable<Control> GetAllLabelControls(Control parent) { foreach (Control control in parent.Controls) { if (control is Label) yield return control; foreach (Control descendant in GetAllLabelControls(control)) { if (descendant is Label) yield return descendant; } } } 的{​​{1}},但我的行

Text

不会编译:

  

System.Web.UI.Control不包含Text和no的定义   接受类型的第一个参数的扩展方法   可以找到System.Web.UI.Control。

BTW,如果我使用上面引用的链接中建议的确切语法,

Control

我收到错误消息:

  

无法隐式转换类型   System.Collections.Generic.List到   System.Collections.Generic.List

如何获得c.Text = HighlightSearchTerms(c.Text, Request.QueryString["searchstring"]); 的{​​{1}}?

根据@ S.Akbari的回答,修改后的代码是替换

List<Control> ControlsToCheck = GetAllControls(dv).OfType<Label>().ToList();

Text

1 个答案:

答案 0 :(得分:2)

试试这个:

foreach (Label lbl in dvPurchaseOrder.Controls.OfType<Label>().Cast<Label>())
{
    lbl.Text = "";//Or other properties of the Label
}