2014-04-29 11 views
0

asp.net 웹 양식 응용 프로그램에서 SQL 데이터베이스에서 최대 2 개의 질문 및 최대 3 답변 (각 질문에 대한) 임의의 집합을 당기는. 각 질문에 대해 일련의 답변을 보유 할 RadioButtonList 컨트롤을 동적으로 만듭니다.asp.net 동적 컨트롤 값을

포스트 백이 발생하면 각 RadioButtonList의 값을 읽어야합니다. 응답이 잘못되고 답변이 맞으면 사용자가 새 페이지로 리디렉션되는 경우 새 (다른) 일련의 질문과 답변이 만들어지기 때문에 컨트롤 자체를 선택된 인덱스/값으로 유지할 필요가 없습니다.

포스트 백 동안 Page_init 이벤트에서 컨트롤을 다시 만들려고했으나 동적 컨트롤이 임의의 데이터 집합을 기반으로 만들어 졌기 때문에 매번 다를 것입니다. 를 Page_Load에

동적 컨트롤 생성 :

foreach (DataRow question in dt_questions.Rows) 
{ 
    questionCounter++; 

    RadioButtonList RBL_Answers = new RadioButtonList(); 
    RBL_Answers.ID = "RBL_Answers_" + questionCounter; 

    // fill radio list with answers to pick from 
    foreach (DataRow answer in dt_answers.Rows) 
    { 
     ListItem item = new ListItem(answer["IA_Text"].ToString(), answer["IA_Correct"].ToString()); 
     RBL_Answers.Items.Add(item); 
    } 

    Panel_ContentQA.Controls.Add(RBL_Answers); 
} 

답변

0

내가 일을하고 있던 방식을 변경했다 문제를 해결하려면되도록 컨트롤의 SQL 데이터베이스에서 (임의) 행의 기본 키 ID의의 페이지에 생성 된 내용은 ViewState에 저장됩니다. 다시 게시가 발생하면 ViewState에 저장된 PK에 해당하는 SQL에서 동일한 데이터를 가져 와서 컨트롤이 다시 만들어집니다.