2012-01-15 5 views
4

버튼 클릭시 동적으로 생성 된 확인란에서 읽으려고합니다. 문제는 확인란이 선택되면 제출 클릭시 추가 체크 해제 작업이 제대로 읽히지 않는다는 것입니다.동적으로 생성 된 값에서 잘못된 값 가져 오기

편집 : 체크 박스는 그림과 같이 SetSelection을 호출하여 radiobuttonlist를 선택할 때 처음 생성됩니다.

코드 스 니펫은 아래에 표시되어 있습니다. 어떤 문제가 발생했는지 알 수 있습니까? false로 메소드가 호출 될 때마다 재설정 할 것이다 그렇다면 당신은 btnSubmit에

bool isChecked = ((CheckBox)table.FindControl("chkAll")).Checked; 

를 선언처럼

protected void Page_Load(object sender, EventArgs e) 
{  
    if (this.IsPostBack) 
    { 
    .. 
     GenerateDynamicUI(); 
    } 
    ... 
}  


private void GenerateDynamicUI(int selectedItem) 
{ 
    ... 
    TableCell cellCheckBox = new TableCell(); 
    CheckBox chkBox = new CheckBox();    
    chkBox.Text = "Consider all"; 
    chkBox.ID = "chkAll"; 
    cellCheckBox.Controls.Add(chkBox); 

    TableRow chkRow = new TableRow(); 
    chkRow.Cells.Add(cellCheckBox); 
    table.Rows.Add(chkRow); 
} 

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    ... 
    bool isChecked = ((CheckBox)table.FindControl("chkAll")).Checked; 

} 

private void SetSelection() 
{ 
    int selectedItem = int.Parse(radiobuttonList.SelectedItem.Value);   
    GenerateDynamicUI(selectedItem); 
    pnlDynamic.Visible = true;    
} 

protected void radiobuttonList_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    SetSelection(); 
}  
+0

이 체크 박스는 이미 웹 양식 코드에 포함되어 있습니까 아니면 포스트 백에서만 생성됩니까? –

+0

포스트 백에서 생성됩니다. – devnull

+0

GenerateDynamicUI 메소드에서 동적으로 생성됩니다. – Brissles

답변

2

가 보인다. 그것을 밖으로 선언 해보십시오. IE :

bool isChecked; 
protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    ... 
    isChecked = ((CheckBox)table.FindControl("chkAll")).Checked; 

} 
+0

이것은 중요하지 않습니다. 로컬 변수입니다. 또한 매번 작성됩니다. – Brissles

+0

아, 알았어, 코드를 잘못 읽었 어. 미안. – Dusty

4

예제를 다시 작성했으며 정상적으로 작동합니다. 예기치 않은 동작을 담당하는 코드에 뭔가 다른 것이 있다고 생각할 수 있습니다.

조작/동적 컨트롤을 다시 만들 오히려 Page_Load보다 Page_PreInit 이벤트를 사용해보십시오 :

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    // create controls here 
    GenerateDynamicUI(); 
} 

더 많은 정보 작성자 : http://msdn.microsoft.com/en-us/library/ms178472.aspx

'준비가되지 제대로'나는 가정 당신이 말은 그것이 True을 유지를 처음으로 확인한 후에는 False을 반환하지 않습니까?

+0

예, True로 유지하고 처음 확인한 후에는 False를 반환하지 않습니다. – devnull

+0

+1 PreInit에서 동적 컨트롤을 작성합니다. 그것이 그들이 속한 곳입니다. –

관련 문제