2011-11-12 5 views
1

웹 양식에 30 개의 체크 박스가 있고 체크 박스의 상태를 bool 배열에 저장하고 싶습니다. asp.net은 "i"와 같은 변수를 가진 체크 박스의 "checked"상태를 사용하는 것을 허용하지 않기 때문에 문제는 내가 코드를 수행하는 방법을 모른다는 것입니다!체크 박스의 상태를 변수로 체크합니다. 확인란 (i)을 선택 했습니까?

내가 이런 걸 원하는 :

Compilation Error 
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0118: 'System.Web.UI.WebControls.CheckBox' is a 'type' but is used like a 'variable' 

Source Error: 

Line 109:  for (int i = 0; i < 30; i++) 
Line 110:  { 
Line 111:   array[i] = CheckBox(i).Checked; 
Line 112:  } 
Line 113: 
내가 정확히 내가 가진 체크 박스의 ID를 사용하는 방법을 알고 싶어

: 위의 코드를 실행하면

bool[] array = new bool[30]; 
for (int i = 0; i < 30; i++) 
    { 
     array[i] = CheckBox(i).Checked ; 
    } 

가이 오류가 발생합니다을

i = 15; 
CheckBox(i).Checked 

대신 :

01 같은 변수
CheckBox15.Checked 

ASP.net 4 및 C# 감사합니다.

답변

1

이 시도 :

bool[] array = new bool[30]; 
for (int i = 0; i < 30; i++) 
{ 
    array[i] = ((CheckBox)Page.FindControl("CheckBox" + i.ToString)).Checked; 
} 

UPDATE :

난 그냥 코드가 작동하는 경우 만 테스트하는 새 프로젝트를 생성하고 일했다. 정말. : |

<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:CheckBox ID="CheckBox1" runat="server" /> 
     <asp:CheckBox ID="CheckBox2" runat="server" /> 
     <asp:CheckBox ID="CheckBox3" runat="server" /> 
     <asp:CheckBox ID="CheckBox4" runat="server" /> 
     <asp:CheckBox ID="CheckBox5" runat="server" /> 
     <asp:CheckBox ID="CheckBox6" runat="server" /> 
     <asp:CheckBox ID="CheckBox7" runat="server" /> 
     <asp:CheckBox ID="CheckBox8" runat="server" /> 
     <asp:CheckBox ID="CheckBox9" runat="server" /> 
     <asp:CheckBox ID="CheckBox10" runat="server" /> 
    </div> 
    </form> 
</body> 

코드 숨김

public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     bool[] array = new bool[10]; 
     for (int i = 1; i <= 10; i++) 
     { 
      array[i] = ((CheckBox)Page.FindControl("CheckBox" + i.ToString())).Checked; 
     } 
    } 
} 
+0

그것은 오류와 함께 : "예외 정보를 : System.NullReferenceException :. 개체 참조가 개체 소스 오류의 인스턴스로 설정되지 않았습니다 : 라인 111 : 배열을 [I ] = ((CheckBox) Page.FindControl ("CheckBox"+ i.ToString())). 선택됨; " 하지만 @vhinn 끔찍한 감사합니다 –

+0

ID가 "CheckBox0"인 확인란이 있습니까? 아무 것도 없다면 물론 NULL을 리턴 할 것입니다. for 루프가 0이 아닌 1로 시작하도록 변경하십시오! –

+0

그것은 그 때문이 아닙니다. 당신이 말한 것을 결과가 똑같은 것으로 보았습니다. 나는 또한 다음과 같이했습니다 : bool con = ((CheckBox) Page.FindControl ("CheckBox10")). 그리고 그것은 동일했습니다. 당신도 내가 이걸 시도했는지 궁금해 할 것이다. string str = ((CheckBox) Page.FindControl ("CheckBox10")). ID.ToString(); 및 결과는 동일합니다. 나는이 방법으로 특정 컨트롤을 전혀 조작 할 수 없다고 생각합니다! –

관련 문제