Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过控件的ID访问控件_C#_Asp.net - Fatal编程技术网

C# 如何通过控件的ID访问控件

C# 如何通过控件的ID访问控件,c#,asp.net,C#,Asp.net,在一个字符串中有一个控件ID,我能知道它是文本框还是Rad组合框还是RadDatePicker或任何此类属性吗?有什么函数可以得到它吗?我可以使用反射吗?如果没有,请给我一些建议。我有一个名为invoice.ascx的用户控件页,控件位于其父页ie invoice.aspx中。我只知道身份证。 我在invoice.ascx.cs中尝试了以下代码 string ID=txtPartyName; TextBox txt = this.Parent.FindControl(ID) as Tex

在一个字符串中有一个控件ID,我能知道它是文本框还是Rad组合框还是RadDatePicker或任何此类属性吗?有什么函数可以得到它吗?我可以使用反射吗?如果没有,请给我一些建议。我有一个名为invoice.ascx的用户控件页,控件位于其父页ie invoice.aspx中。我只知道身份证。 我在invoice.ascx.cs中尝试了以下代码

  string ID=txtPartyName;
  TextBox txt = this.Parent.FindControl(ID) as TextBox;
但在这里我必须知道它是一个文本框。我将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子句)

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

  • FindControl仅搜索当前命名容器下的控件。换句话说,它不会递归查找。根据控件树结构,您可能需要它。请参阅

  • 在上面的行中:TextBox txt=this.Parent.FindControl(ID)as TextBox


  • 如果找到的控件不是textbox类型,则txt将为null。您可以利用此点来查找控件是否为textbox

    谢谢!我要向其传递ID的函数位于类库中,在类库中我无法使用System.Web.UI.control。您的解决方案很好,但在microsoft visual Studio ID的类库中不起作用您是否尝试导入名称空间?“使用System.Web.UI”是的,我尝试过。我想我需要更改进一步的逻辑。但是谢谢,现在我可以获得控件类型了。谢谢!