gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:15:32 30 4
gpt4 key购买 nike

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

我有两个 DropDownList 控件(最初设置为不可见)和一个自动回发行为设置为 true 的 RadioButtonList 控件。

每当回发发生时,我都想从 RadioButtonList 控件中读取 SelectedValue 属性 - 并根据它,使其中一个 DropDownLists 可见。

这是我的问题:

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

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

if(Page.PostBack==true)
{
RadioButtonList rbl = (RadioButtonList)Page.FindControl("RadioButtonList1");
if(rbl.SelectedValue=="optionA")
{
DropDownList ddA = (DropDownList)Page.FindControl("DropDownListA");
ddA.Visible = true;
}
else
{
DropDownList ddB = (DropDownList)Page.FindControl("DropDownListB");
ddB.Visible=true;
}
}

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

我完全走错路了吗?有人会指导我实现我想做的事情的最佳方法吗?

另外,我该怎么做才能让 designer.cs 文件加载控件?


编辑:/facepalm

我自己想通了。我忘记了我正在使用表格内的控件。

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

缺乏 sleep 和咖啡是罪魁祸首。我很抱歉。感谢您的帮助!

最佳答案

Page.FindControl 不是递归的,即如果 dropdownlist1 控件在其他控件中,它将返回 null。检查此链接以获取详细信息,看看您是否能够正确找到下拉列表。

http://www.mha.dk/post/Recursive-PageFindControl.aspx

关于c# - ASP.NET 从代码隐藏切换控件可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937887/

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