2011-04-18 11 views
0

5 개의 체크 박스 목록이 있으며 각 체크 박스 목록에는 동일한 6 개의 체크 박스가 있습니다. 특정 조건에서 page_Load 동안이 체크 박스 목록을 확인해야합니다. 어떻게 할 수 있습니까?조건부 체크 박스 목록에서 체크 박스를 선택하십시오.

for (int j = 0; j < no_of_listitem; j++) 
{ 
    SqlCommand check = new SqlCommand("SELECT ISGoal1, ISGoal2,ISGoal3, ISGoal4,ISGoal5 FROM PRM2011_EMPLOYEE_GOAL WHERE EmployeeID = '" + employeeid[j] + "'", con); 
    SqlDataReader y = check.ExecuteReader(); 
    while (y.Read()) 
    { 
     if (null != y && y.HasRows) 
     { 
      string yes_or_no = y["ISGoal1"].ToString(); 
      yes_or_no = yes_or_no.Trim(); 
      if (yes_or_no == "Yes") 
      { 
       CheckBoxList1.Items[j].Selected = true; 
      } 

      //else CheckBoxList1.Items[j].Selected = false; 

      yes_or_no = y["ISGoal2"].ToString(); 
      yes_or_no = yes_or_no.Trim(); 
      if (yes_or_no == "Yes") 
      { 
       CheckBoxList2.Items[j].Selected = true; 
      } 
      //else CheckBoxList2.Items[j].Selected = false; 

      yes_or_no = y["ISGoal3"].ToString(); 
      yes_or_no = yes_or_no.Trim(); 
      if (yes_or_no == "Yes") 
      { 
       CheckBoxList3.Items[j].Selected = true; 
      } 
      //else CheckBoxList3.Items[j].Selected = false; 

      yes_or_no = y["ISGoal4"].ToString(); 
      yes_or_no = yes_or_no.Trim(); 
      if (yes_or_no == "Yes") 
      { 
       CheckBoxList4.Items[j].Selected = true; 
      } 
      //else CheckBoxList4.Items[j].Selected = false; 

      yes_or_no = y["ISGoal5"].ToString(); 
      yes_or_no = yes_or_no.Trim(); 
      if (yes_or_no == "Yes") 
      { 
       CheckBoxList5.Items[j].Selected = true; 
      } 
      //else CheckBoxList5.Items[j].Selected = false; 
     } 
    } 
    y.Close(); 
} 

employeeid[] 6 employees.no_of_listitems의 ID가 thses 6 개 직원 ID 목록 인 포함 6이다.

답변

0

CheckBoxList가 포함 된 목록을 만듭니다. 그런 다음 코드를 다음과 같이 바꿉니다.

for(int z = 1; z <= checkboxLists.Count; z++) 
{ 
    checkboxLists[z].Items[j].Selected = y["ISGoal" + z].ToString().Trim() == "yes"; 
} 

이 코드는 유형에 관계 없지만주의해야합니다. 일반적으로 코드에서 string을 사용하지 않으려면 y [ "ISGoal"+ z]가 null 일 수 있습니다. 이 경우 응용 프로그램이 중단됩니다. 이는 확인을위한 점검을하고 싶다는 뜻입니다. null에 대해 ToString() 또는 Trim()을 만들려고하면 NullPointerException이 발생합니다. 데이터베이스의 "예"를 비트로 변경하려고 할 수도 있습니다. 함께 일하는 것이 훨씬 안전 할 것입니다. 누군가가 "예"가 아닌 "사실"이라고 쓰면 어떨까요?

도움이 되었기를 바랍니다. 질문이 있으면 주저하지 마십시오.

+0

어떻게 체크 박스 목록을 만들 수 있습니까? 내 응용 프로그램은 아무도 "예"또는 "아니오"라고 쓰지 않습니다. 확인란을 선택하면 "예"가 데이터베이스에서 업데이트됩니다. 하지만 여전히 상황을 어떻게 처리 할 것인가? – scooby

+0

'List checkboxLists = 새 목록 (); checkboxLists.Add (CheckBoxList1); ... ' –

+0

코드에 YES 또는 NO를 쓰면 아무런 이유없이 데이터베이스에서 더 많은 공간을 사용하게됩니다. 조금 더 적은 공간을 사용하고 더 좋은 아이디어입니다. CheckBoxList의 목록을 작성하면 질문에 게시 한 전체 코드를 복사하여 붙여 넣는 대신 각 목록을 반복 할 수 있습니다. –

관련 문제