如何访问.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";      
}

如何访问.aspx页中的控件

首先,我修复了您的代码中的大量拼写错误。

其次,它

找不到它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;)。