2009-11-26 59 views
0

我有一個綁定到對象數據源的listView控件。在ListView1_ItemDataBound事件中,我正在生成一些動態控件。我這樣做是因爲這取決於特定的列值,我可能需要生成文本框,單選按鈕,複選框等ListView -Dynamic Controls和DataPager事件

一些代碼在這裏:

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); 

我DataPager的也。當我轉到下一頁時,我想以某種方式捕獲上一頁中的用戶響應。否則,所有的用戶響應都會丟失。我嘗試使用ListView1_PagePropertiesChanging事件。但在這裏,我似乎沒有得到頁面中的動態控件。

我需要獲取單選按鈕的選定值,以便我可以保存它或放入某個會話變量,以便用戶返回到此頁面時可以看到他的先前值。

有人能請建議一些見解我做錯了什麼。

回答

0

問題是您必須在OnInit中創建控件,然後ViewState persister才能完成它的工作。如果在OnInit之後執行,在ItemDataBound中,當觸發Postback時,控件不存在且其視圖狀態未反序列化。
要訪問單選按鈕的值並獲取選定的值,您必須查看Request.Form字典並找到它。