遍历 ASP:Buttons
iterate through ASP:Buttons
我是新手,我对 ASP:Button 控件有疑问。
页面上大约有 60 个按钮,典型的 XAML 看起来像这样:
<asp:Button class="tile" ID="Button1" runat="server" Text="Domains"/>
我需要遍历页面上的所有按钮来更改属性,我不想一个一个地做。
我在这里和那里找到了很多建议,但都没有用。我后面的代码是:
for (int i = 1; i < 59; i++)
{
String butt = String.Format("Button{0}", i);
var btn = FindControl(butt);
btn.Visible = false;
}
错误是没有对象引用。 btn 为空。
我试图检查 运行ning 应用程序中的元素,它说元素的 ID 是 "MainContent_Button1" - 也尝试过,但不起作用。我试过的另一件事是
foreach(var button in this.Controls.OfType<Button>())
{
button.Visible = false;
}
我得出的结论是 asp:button 是 a) 不是按钮类型的控件 b) 它的 ID 是在应用程序为 运行 时以某种方式生成的,因此没有 ID 为 Button1 的控件被发现。
谁能给我解释一下吗?我真的很想了解为什么会这样,以及这种行为的目的到底是什么。
谢谢
编辑:我什至尝试完全删除循环并使用 FindControl 方法修改一个特定按钮。也不行。
var btn = FindControl("Button1");
btn.Visible = false;
结果:System.NullReferenceException:'Object reference not set to an instance of an object.'
您似乎在使用母版页。在主页上使用 FindControl 与在普通页面上使用略有不同 page.You 首先需要找到按钮所在的正确 ContentPlaceHolder
并在该 ContentPlaceHolder 上使用 FindControl。
ContentPlaceHolder cph = Master.FindControl("MainContent") as ContentPlaceHolder;
for (int i = 1; i < 9; i++)
{
String butt = String.Format("Button{0}", i);
var btn = cph.FindControl(butt);
btn.Visible = false;
}
我是新手,我对 ASP:Button 控件有疑问。
页面上大约有 60 个按钮,典型的 XAML 看起来像这样:
<asp:Button class="tile" ID="Button1" runat="server" Text="Domains"/>
我需要遍历页面上的所有按钮来更改属性,我不想一个一个地做。
我在这里和那里找到了很多建议,但都没有用。我后面的代码是:
for (int i = 1; i < 59; i++)
{
String butt = String.Format("Button{0}", i);
var btn = FindControl(butt);
btn.Visible = false;
}
错误是没有对象引用。 btn 为空。 我试图检查 运行ning 应用程序中的元素,它说元素的 ID 是 "MainContent_Button1" - 也尝试过,但不起作用。我试过的另一件事是
foreach(var button in this.Controls.OfType<Button>())
{
button.Visible = false;
}
我得出的结论是 asp:button 是 a) 不是按钮类型的控件 b) 它的 ID 是在应用程序为 运行 时以某种方式生成的,因此没有 ID 为 Button1 的控件被发现。
谁能给我解释一下吗?我真的很想了解为什么会这样,以及这种行为的目的到底是什么。
谢谢
编辑:我什至尝试完全删除循环并使用 FindControl 方法修改一个特定按钮。也不行。
var btn = FindControl("Button1");
btn.Visible = false;
结果:System.NullReferenceException:'Object reference not set to an instance of an object.'
您似乎在使用母版页。在主页上使用 FindControl 与在普通页面上使用略有不同 page.You 首先需要找到按钮所在的正确 ContentPlaceHolder
并在该 ContentPlaceHolder 上使用 FindControl。
ContentPlaceHolder cph = Master.FindControl("MainContent") as ContentPlaceHolder;
for (int i = 1; i < 9; i++)
{
String butt = String.Format("Button{0}", i);
var btn = cph.FindControl(butt);
btn.Visible = false;
}