Asp.net ListView-动态控件和DataPager事件

Asp.net ListView-动态控件和DataPager事件,asp.net,Asp.net,我有一个绑定到对象数据源的listView控件。在ListView1_ItemDataBound事件中,我生成了一些动态控件。我这样做是因为根据特定的列值,我可能需要生成文本框、单选按钮、复选框等 这里有一些代码: ListViewDataItem item = (ListViewDataItem)e.Item; typez = Convert.ToInt32(DataBinder.Eval(item.DataItem,"Type").ToString()); if (typez == 1)

我有一个绑定到对象数据源的listView控件。在ListView1_ItemDataBound事件中,我生成了一些动态控件。我这样做是因为根据特定的列值,我可能需要生成文本框、单选按钮、复选框等

这里有一些代码:

 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);
我也有数据寻呼机。当我转到下一页时,我想以某种方式捕获上一页中的用户响应。否则,所有用户响应都将丢失。我尝试使用ListView1_PagePropertiesChange事件。但在这里,我似乎没有得到页面中的动态控件

我需要得到单选按钮的选择值,这样我就可以保存它或放入一些会话变量,这样当用户返回到这个页面时,他就可以看到他的previous值


有人能就我做错了什么提出一些见解吗。

问题是您必须在OnInit中创建控件,然后ViewState persister才能完成它的工作。如果在OnInit之后执行此操作,在ItemDataBound中,当触发回发时,控件不存在,并且它们的viewstate不会反序列化。
要访问单选按钮的值并选择其中一个,您必须查看请求。形成字典并找到它