如何访问.aspx页中的控件
本文关键字:控件 aspx 何访问 访问 | 更新日期: 2023-09-27 18:35:51
>我在代码隐藏页面中附加带有radiobuttonlist
的事件,单选按钮列表位于
listview
.当我运行程序时,它会生成一个错误:"对象引用未设置为对象的瞬间"
.aspx代码:
<asp:ListView ID="ListView1" runat="server" >
<ItemTemplate>
<tr><td>
<asp:RadioButtonList ID="radiobuttonlist4" runat="server" AutoPostBack="true"
RepeatDirection="Horizontal"
OnSelectedIndexChanged="selected" Width="240px">
<asp:ListItem Value="agree"></asp:ListItem>
<asp:ListItem Value="disagree"></asp:ListItem>
<asp:ListItem Value="strongagree"></asp:ListItem>
<asp:ListItem Value="strongdisagree"></asp:ListItem>
</asp:RadioButtonList>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
.aspx.cs代码
assessdal s = new assessdal();
ListView1.DataSource = s.showop1();
ListView1.DataBind();
RadioButtonList list= ListView1.FindControl("radiobuttonlist4") as RadioButtonList;
list.SelectedIndexChanged += new EventHandler(handle);
public void handle(object sender, EventArgs e)
{
Label2.Text = "y";
}
首先,我修复了您的代码中的大量拼写错误。
其次,它找不到它FindControl
,因为它是在ListView1
上调用的,而不是在页面(或它所在的控件层次结构)上调用的,并且FindControl
仅在该实例的子控件中查找。
尝试Page.FindControl("radiobuttonlist4")
在页面中找到它。
您应该在
aspx 上以声明方式附加事件处理程序,这是最简单的方法。
<asp:RadioButtonList ID="radiobuttonlist4" runat="server" AutoPostBack="true"
RepeatDirection="Horizontal"
OnSelectedIndexChanged="selected"
Width="240px">
</asp:RadioButtonList>
由于ListView
可以包含多个项,因此控件在其Itemtemplate
中的NamingContainer
不是ListView
,而是ListViewItem
。这可确保每个控件在客户端上获得唯一 ID。
因此,您可以通过以下方式在按钮的单击事件处理程序中找到RadioButtonList
:
var button = (Button)sender;
var item = (ListViewItem)button.NamingContainer;
var radiobuttonlist4 = (RadioButtonList)item.FindControl("radiobuttonlist4");
如果你想在SelectedIndexChanged
事件中"找到"RadioButtonList,只需相应地投射sender
参数(var rbl = (RadioButtonList)sender;
)。