2013-05-12 3 views
1

동적 생성 라디오 버튼의 값을 얻기 :I 이런 식으로 라디오 버튼 배열을 생성

RadioButton[] radio = new RadioButton[size]; 

for (int i = 0; i < size ; i++) 
    { 
     radio[i] = new RadioButton(); 
     radio[i].ID = "voted"+i.ToString(); 
     radio[i].GroupName = "voted"; 
     Session[radio[i].ID] = radio[i]; 
    } 

사용자가 버튼을 클릭하면 이벤트

protected void Votes_Click(object sender, EventArgs e) 
{ 
    RadioButton r=new RadioButton(); 
    for (int i = 0; i < (int)Session["cancount"]; i++) 
    { 
     r=(RadioButton)(Session["voted" + i.ToString()]); 
     if (r.Checked) 
     { 
      //Do somethings; 
     } 
    } 
} 

하지만 r.checked의 값이다 항상 false, 변경되지 않은 이유는 무엇입니까 ??

+0

여기서 수행하려는 작업이 확실하지 않습니다. 세션이 라디오 버튼을 선택했는지 파악할 때 세션과 어떤 관련이 있습니까? 사용자가 투표 한 내용을 추적하려고합니까? 또한 페이지에 라디오 버튼을 추가하는 방법은 무엇입니까? –

+0

예 사용자가 투표 한 내용을 추적하고 싶습니다. 내 구멍 코드를 게시하지 않았습니다.이 라디오 버튼을 페이지 패널에 추가 한 표에 추가합니다. –

+0

문맥을 더 추가하십시오. 예를 들어, 페이지 수명주기는 라디오 버튼을 만드는 것입니까? preinit, init, load, prerender? 어디에? – x0n

답변

1

이 질문에는 많은 문맥이 빠졌지 만 웹 사이트를 작성하는 것처럼 보이는 이상한 방법으로, 라디오 버튼을 추가하지 않은 것이 페이지 제어 계층을 제어하지 않는다고 생각됩니다. 또한, Page_load 이벤트 대신 Page_load 이벤트에 라디오 버튼을 만드는 것은 추측합니다. 이후에 추가 된 포스트 백에서 클릭을받지 않기 때문에 문제입니다. ASP에서 클릭이 처리됩니다. .그물.

이것이 이해가되지 않는다면, ASP.NET이 어떻게 작동하는지 조금 더 읽어야합니다. 데스크톱 애플리케이션처럼 정확하게 처리 할 수는 없습니다. 이벤트와 핸들러는 HTTP 게시물로 구분되어 컨트롤을 만들고 초기화하는 방법과 위치를 구분합니다.

+0

네, 맞습니다. Page_Load 이벤트에서 라디오 버튼을 만들었습니다. Page_Init 이벤트에서 라디오 버튼을 만들면 코드가 제대로 작동합니다. 대단히 감사합니다. –

+0

그것이 효과가있어 기쁩니다. 나는 심령 독서에 대해 +1을 기대했지만, 나는 주어진 것을 택할 것이다;) – x0n

1

모든 세션 상태 항목을 제거하면 클릭되는 버튼이 '보낸 사람'으로 이벤트 처리기에 전달됩니다. 클릭 된 라디오 버튼에 액세스하려면 단지 라디오 버튼으로 캐스팅하고 개체가있다 :

RadioButton r = (RadioButton)sender; 

또한 오프를 사용하여 A RadioButtonList 대신 당신이 설정하는 세션 변수가 더 낫다. 그런 다음 페이지에 RadioButtonList를 추가하고 루프에 버튼을 추가하기 만하면됩니다.

myRbl.Items.Add(new ListItem("text", i.ToString(), true)); 
관련 문제