2012-05-30 1 views
0

Je joins événement avec radiobuttonlist dans le code behind, radiobuttonlist est à l'intérieur d'un
listview .Lorsque je lance le programme génère une erreur: « objet referance pas mis à instant de l'objet »Comment accéder à un contrôle dans une page .aspx

Code .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 code

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";  
} 
+1

Veuillez formater votre code, dans quel modèle de listview se trouve la RadioButtonList? –

+0

soory, il ya contrôle radiobuttonlist dans le code .aspx, lors de la copie du code, il a été manqué .. – user1405508

+0

@ user1405508: Pourquoi ne pas éditer votre question correctement? Alors que d'autres peuvent aider !! –

Répondre

1

Tout d'abord, je fixe une tonne de fautes de frappe dans votre code.

En second lieu, il est de ne pas trouver parce que FindControl est appelé à ListView1, pas la page (ou la hiérarchie de contrôle dans lequel il existe) et FindControl semble que dans les contrôles enfants de cette instance.

Essayez Page.FindControl("radiobuttonlist4") pour le trouver dans la page.

+0

mais radiobuttonlist est dans listview .so nous le trouvons dans listview – user1405508

+0

mais radiobuttonlist est dans listview .so nous le trouvons dans listview – user1405508

0

Vous devez attacher le gestionnaire d'événements de manière déclarative sur l'aspx, c'est la méthode la plus simple.

<asp:RadioButtonList ID="radiobuttonlist4" runat="server" AutoPostBack="true" 
    RepeatDirection="Horizontal" 
    OnSelectedIndexChanged="selected" 
    Width="240px"> 
</asp:RadioButtonList> 

Depuis le ListView peut contenir plusieurs éléments, le NamingContainer d'un contrôle dans son Itemtemplate est pas le ListView, mais le ListViewItem. Cela garantit que chaque contrôle obtient un identifiant unique sur le client.

Vous pouvez trouver votre RadioButtonList dans le gestionnaire d'événements clic du bouton de cette façon:

var button = (Button)sender; 
var item = (ListViewItem)button.NamingContainer; 
var radiobuttonlist4 = (RadioButtonList)item.FindControl("radiobuttonlist4"); 

Si vous voulez « trouver » le RadioButtonList dans son cas SelectedIndexChanged, tout simplement jeté l'argument sender accordingingly (var rbl = (RadioButtonList)sender;) .

+0

merci de m'aider .... – user1405508

+1

@ user1405508: N'oubliez pas d'accepter la réponse si elle résout votre problème. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

Questions connexes