gpt4 book ai didi

asp.net - 查找上一个和下一个同级控件

转载 作者:行者123 更新时间:2023-12-04 17:58:27 24 4
gpt4 key购买 nike

有没有办法从代码隐藏中找到 ASP.net 表单中的上一个和下一个同级控件,类似于 findControl()?

有时您不想为控件分配 ID 只是为了可以执行 parent().findControl("ID") 以找到它。当我所能做的只是 previousControl() 或其他东西(a la jQuery)时,我已经厌倦了想出 ID。

这在您编写通用函数以处理多个具有相似布局但不想一一处理的控件的情况下也很有用。

感谢您的任何建议。

最佳答案

对于后代,这是我最终编写的函数。效果很好(在真实项目中测试过):

    public static Control PreviousControl(this Control control)
{
ControlCollection siblings = control.Parent.Controls;
for (int i = siblings.IndexOf(control) - 1; i >= 0; i--)
{
if (siblings[i].GetType() != typeof(LiteralControl) && siblings[i].GetType().BaseType != typeof(LiteralControl))
{
return siblings[i];
}
}
return null;
}

像这样使用:
Control panel = textBox.PreviousControl();

和下一个控制:
    public static Control NextControl(this Control control)
{
ControlCollection siblings = control.Parent.Controls;
for (int i = siblings.IndexOf(control) + 1; i < siblings.Count; i++)
{
if (siblings[i].GetType() != typeof(LiteralControl) && siblings[i].GetType().BaseType != typeof(LiteralControl))
{
return siblings[i];
}
}
return null;
}

与 Atzoya 相比,此解决方案的优势在于,首先,您不需要原始控件具有 ID,因为我是基于实例进行搜索的。其次,您必须知道 ASP.net 会生成几个 Literal 控件,以便在“真实”控件之间呈现静态 HTML。这就是我跳过它们的原因,否则您将继续匹配垃圾。当然,这样做的缺点是如果它是文字,你就找不到控件。这个限制在我的使用中不是问题。

关于asp.net - 查找上一个和下一个同级控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3685530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com