如何通过其ID访问控件

本文关键字:访问 控件 ID 何通过 | 更新日期: 2023-09-27 18:08:31

在字符串中有一个控件ID,我可以知道它是文本框还是Rad组合框或RadDatePicker或任何此类属性吗?有什么函数可以得到它吗?我可以使用反射吗?如果没有,请给我一些建议。我有一个名为发票的用户控制页。Ascx和控件都在它的父页面invoice.aspx中。我只知道他的身份。我在invoice. asx .cs

中尝试了以下代码
  string ID=txtPartyName;
  TextBox txt = this.Parent.FindControl(ID) as TextBox;

但这里我必须知道它是一个文本框。我将ID传递给一个将填充控件的函数。如果传递任何其他属性有帮助,请建议。提前感谢!

如何通过其ID访问控件

试试这样做:

Control ctrl = this.Parent.FindControl(ID);
if(ctrl is TextBox){
  TextBox txt = (TextBox)ctrl;
  //Do anything Textbox specific
}
if(ctrl is RadDatePicker){
  RadDatePicker rad = (RadDatePicker)ctrl;
  //Do anything RadDatePicker specific
}

如果你有几个可能的类型,使用switch(typeof(ctrl))来检查类型(这样就不必写那么多If子句了。

如果你写下你的具体目标,也许会有更好的解决方案。

  1. FindControl只搜索当前命名容器下的控件。换句话说,它不做递归查找。根据您的控制树结构,您可能需要它。见http://blog.codinghorror.com/recursive-pagefindcontrol/

  2. 在你上面一行:TextBox txt = this.Parent.FindControl(ID) as TextBox

如果找到的控件不是文本框类型的,

txt将为空。您可以利用这一点来查找控件是否为文本框