2009-11-26 6 views
0

J'ai un contrôle listView qui est lié à une source de données d'objet. Dans l'événement ListView1_ItemDataBound, je génère des contrôles dynamiques. Je fais cela parce que selon une valeur de colonne particulière, je pourrais avoir besoin de générer zone de texte, bouton radio, case à cocher, etc.ListView - Contrôles dynamiques et événements DataPager

Certains code ici:

ListViewDataItem item = (ListViewDataItem)e.Item; 
typez = Convert.ToInt32(DataBinder.Eval(item.DataItem,"Type").ToString()); 
if (typez == 1) //1 means generate radibutton 
      { 

       string[] options = DataBinder.Eval(item.DataItem, "QuestionDetail").ToString().Split(new string[] { delimiter }, StringSplitOptions.None); 
       questionID = Convert.ToInt32(DataBinder.Eval(item.DataItem, "Question_ID").ToString()); 

       int optionCount = 1; 
       RadioButtonList rbl = new RadioButtonList(); 

       //set ID for the radiobtnList to the questionid no. 
       rbl.ID = "mcq_" + questionID; 

       foreach (string s in options) 
       { 
        //adds the MCQ options to list item 
        ListItem li = new ListItem(Util.GetAlphabet(optionCount).ToUpper() + ". " + s, Util.GetAlphabet(optionCount).ToUpper(), true); 
        rbl.Items.Add(li); 

        optionCount++; 
       } 
       //PlaceHolder PlaceHolder1 = (PlaceHolder)e.Item.FindControl("PlaceHolder1"); 

       PlaceHolder1.Controls.Add(rbl); 

Je DataPager aussi. Quand je vais à la page suivante, je veux en quelque sorte capturer la réponse de l'utilisateur dans la page précédente. Sinon, toute la réponse de l'utilisateur est perdue. J'ai essayé d'utiliser l'événement ListView1_PagePropertiesChanging. Mais ici, je ne semble pas obtenir les contrôles dynamiques de la page.

J'ai besoin d'obtenir la valeur du bouton radio sélectionnée pour pouvoir l'enregistrer ou mettre une variable de session afin que lorsque l'utilisateur revient à cette page, il puisse voir ses valeurs précédentes.

Quelqu'un pourrait-il suggérer quelque chose sur ce que je fais mal.

Répondre

0

Le problème est que vous devez créer des contrôles dans OnInit, puis ViewState persister peut faire son travail. Si vous le faites après OnInit, dans ItemDataBound, lorsque Postback est déclenché, les contrôles n'existe pas et leur viewstate n'est pas désérialisé.
Pour accéder aux valeurs des boutons radio et en sélectionner un, vous devez regarder le dictionnaire Request.Form et le trouver.

Questions connexes