Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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/32.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# ASP.NET从代码隐藏切换控件可见性_C#_Asp.net_Code Behind - Fatal编程技术网

C# ASP.NET从代码隐藏切换控件可见性

C# ASP.NET从代码隐藏切换控件可见性,c#,asp.net,code-behind,C#,Asp.net,Code Behind,我有两个不确定是否相关的问题: 我有两个DropDownList控件(最初设置为不可见)和一个RadioButtonList控件,其中autopostback行为设置为true 每当回发发生时,我想从RadioButtonList控件读取SelectedValue属性,并根据这一点,使其中一个DropDownList可见 我的问题是: 1) 我无法通过ID直接引用RadioButtonList控件。designer.cs文件似乎既不生成RadioButtonList控件,也不生成DropDown

我有两个不确定是否相关的问题:

我有两个DropDownList控件(最初设置为不可见)和一个RadioButtonList控件,其中autopostback行为设置为true

每当回发发生时,我想从RadioButtonList控件读取SelectedValue属性,并根据这一点,使其中一个DropDownList可见

我的问题是:

1) 我无法通过ID直接引用RadioButtonList控件。designer.cs文件似乎既不生成RadioButtonList控件,也不生成DropDownList控件。即使我手动将控件添加到designer.cs文件中,它们也会在重新生成时丢失。这是预期的行为吗

2) 我尝试在Page_Load()方法中使用Page.FindControl属性

但是我在if条件下得到了一个NullReferenceException

我完全走错路了吗?是否有人会指导我如何实现我的目标

另外,如何使designer.cs文件加载控件


编辑:/facepalm

我自己想出来的。我忘了在桌子里使用控件

一旦我将控件移到表外,我就可以直接引用ID


睡眠不足和咖啡不足是罪魁祸首。我道歉。谢谢你的帮助

您正在为rb1.SelectedValue赋值,您应该检查是否找到控件

if(rb1.SelectedValue="optionA") 
应该是

if(rb1.SelectedValue != null)
{ 
   if(rb1.SelectedValue == "optionA")
   {
       DropDownList ddA = (DropDownList)Page.FindControl("DropDownListA"); 

       if (ddA != null)
                 ddA.Visible = true;  
   }
} 

Page.FindControl不是递归的,即如果dropdownlist1控件位于其他控件中,它将返回null。 查看此链接了解详细信息,然后查看是否能够正确找到dropdownlist


如果无法通过控件ID引用控件,并且FindControl失败,则可能是在aspx文件中,控件缺少
runat=“server”
标记


是这样吗?

对不起,写这篇文章时有打字错误。我的IDE中有它,但仍然会出错。[更正帖子]我注意到Page.FindControl(“RadioButtonList1”)返回空值。但我可以验证是否已在designer视图中添加了具有该特定ID的控件。(我仍然无法在designer.cs中看到它-所以可能这就是问题所在?)如果您已在design视图中将控件添加到UI,则不需要使用FindControl,只需使用ID即可。是的,我也这么认为。但正如我在帖子中所说,我无法通过ID引用它(甚至FindControl也无法找到它),我的UI中显然有这个控件。有什么问题吗?
if(rb1.SelectedValue != null)
{ 
   if(rb1.SelectedValue == "optionA")
   {
       DropDownList ddA = (DropDownList)Page.FindControl("DropDownListA"); 

       if (ddA != null)
                 ddA.Visible = true;  
   }
}