2012-08-14 3 views
0

확인란 목록이 있으며 확인할 수있는 상한선이 있습니다. 내가 한 일은 다음과 같습니다.확인란 목록 제한된 항목 만 확인하십시오.

  int numSelected = 0; 
      foreach (ListItem li in chkMultiBrand.Items) 
      { 
       if (li.Selected) 
       { 
        numSelected = numSelected + 1; 
       } 
      } 
      for (int i = 0; i < chkMultiBrand.Items.Count; i++) 
      { 
       if (numSelected >= Convert.ToInt32(objLimit.UPPERLIMIT)) 
       { 
        chkMultiBrand.Items[i].Selected = false; 
       } 
      } 
+0

무엇이 질문입니까? 가지고있는 코드는 어떻게됩니까? – Mharlin

+0

문제는 chkMultiBrand.Items [i] .Selected = false; 다른 체크 상자도 모두 선택 취소됩니다. –

+0

사용자가 확인할 수없는이 한도를 초과하여 사용하고 싶습니다. –

답변

3

나는 최대 수는 의 선택을 취소 이렇게 확인 된 마지막 상자에 원하는 초과 한 경우 내가 아마도 경우이 클라이언트 측을 수행하려고 할 것이지만이

public void chk_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    int numSelected = 0; 
    foreach (ListItem li in chkMultiBrand.Items) 
    { 
     if (li.Selected) 
     { 
      numSelected = numSelected + 1; 
     } 
    } 
    if (numSelected >= Convert.ToInt32(objLimit.UPPERLIMIT)) 
    { 
      string[] control = Request.Form.Get("__EVENTTARGET").Split('$'); 
      int index = control.Length - 1; 
      ListItem lastChecked = (ListItem) chkMultiBrand.Items[Int32.Parse(control[index])]; 
      lastChecked.Selected = false; 
    } 
} 

작동합니다 가정 가능 - 이와 비슷한 것 http://jsfiddle.net/CXfgS/2/

+0

좋은 직장 - 당신을 뽑았습니다! ; o) – bUKaneer

+0

감사합니다. 최선을 다합니다.) –

0

임 코드로 정확하게이 글을 읽고 있다면 무엇 당신이 일을하는 것은 prvious 카운트에서 수가보다 크면 전체 목록

  • 체크 박스의 수를 계산

    1. 입니다 서 허용 된 최대 값을 모두 거짓으로 설정하십시오.

    루프를 결합해야합니다. 이는 항목을 선택한 순서를 추적하지 않으므로 완벽하지 않습니다 그는 첫 번째 X 개의 체크 박스가 체크 된 채로 남아 있으며 그 이후의 모든 항목은 선택 취소됩니다.

     int numSelected = 0; 
         foreach (ListItem li in chkMultiBrand.Items) 
         { 
          if (numSelected >= Convert.ToInt32(objLimit.UPPERLIMIT)) 
          { 
           li.Selected = false; 
          } 
          if (li.Selected) 
          { 
           numSelected = numSelected + 1; 
          } 
         } 
    
  • +0

    으로 변경됨 항목을 선택하는 순서를 추적하고 싶습니다. –