开发者

ListView -Dynamic Controls and DataPager events

I have a listView control which is bound to an object datasource. In the ListView1_ItemDataBound event, I am generating some dynamic controls. I do this because depending on a particular column value, i might need to generate textbox, radio button, check box etc.

Some code here:

 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(rb开发者_如何学编程l);

I have DataPager also. When I go to the next page I want to somehow capture the user response in the previous page. Otherwise, all the user response is lost. I tried using ListView1_PagePropertiesChanging event. But here I somehow do not seem to get the dynamic controls in the page.

I need to get the radio button selected value so that I can save it or put in some session variable so that when user comes back to this page he can see his previuos values.

Could someone please suggest some insight on what I am doing wrong.


Problem is that you have to create controls in OnInit, then ViewState persister can do it's job. If you do it after OnInit, in ItemDataBound, when Postback is triggered, controls doesn't exists and their's viewstate isn't deserialized.
To access values of radio buttons and get selected one, you have to look at Request.Form dictionary and find it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜