我想循环遍历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
答案 0 :(得分:2)
试试这个:
foreach (Label lbl in dvPurchaseOrder.Controls.OfType<Label>().Cast<Label>())
{
lbl.Text = "";//Or other properties of the Label
}