2013-07-04 4 views
6

체크 박스의 목록 리피터 컨트롤을 다음 되세요 확인란을 선택하고 삭제를 클릭하면 코드가 확인란을 찾지 만 읽지 않은 것으로 읽으므로 항목을 삭제하지 않습니다.얻기 리피터 항목의 체크 박스 값은

아이디어가 있으십니까?

+0

1을 참조하십시오. 리피터에서 값을 저장하기 위해 숨겨진 필드를 사용하는 것에 대해서는 생각하지 않았습니다. 제가 더 많은 투표를 할 수 있다면 그렇게 할 수 있습니다. –

답변

10

100 % 확신 할 수는 없지만 모든 페이지로드시 데이터 바인딩을 수행하고 있습니까? 단지 바인딩 시도 !IsPostBack 페이지로드로 인해 리피터가 다시 바인딩되어 모든 현재 상태가 다시 죽어서 발생합니다.

+0

롤, 학교 소년 오류. 그래, 데이터 바인딩은 페이지로드에서 수행되어 상태를 죽이는 중이었습니다. 감사합니다 – HuwD

+0

** + 1 ** 좋은 캐치 –

0

업데이트 패널에 리피터가 있습니다. 이 페이지의 일부가 아닌 경우 작동하지 않습니다에 대한

foreach (RepeaterItem item in rpLists.Items) 
       { 

        if (item.Controls.Count > 0) 
        { 
         DataBoundLiteralControl dbLt = item.Controls[0] as DataBoundLiteralControl; 
         if (dbLt != null) 
         { 
          var controlCollection = this.ParseControl(dbLt.Text); 
          HtmlInputCheckBox cbInclude = (HtmlInputCheckBox) FindControl(controlCollection, "cbIncludeList"); 
          if (cbInclude != null) 
          { 
           if (cbInclude.Checked) 
           { 
            //your code here 
           } 
          } 
         } 
        } 
       } 

내가의 FindControl에 대한에 재귀 적 방법을 만들 수 있었다, 뭔가 : 그래서 RepeaterItem의 유일한 컨트롤이 나를 위해 일한 DataBoundLiteralControl

했다. 는 어깨를 으쓱는 는 awesomeness에 여기 ASP.Net FindControl is not working - How come?

private Control FindControl(Control parent, string id) 
     { 
      if (parent.ID == id) 
       return parent; 

      if (parent.HasControls()) 
      { 
       foreach (Control childControl in parent.Controls) 
       { 

        if (childControl.ID == id) 
         return childControl; 

        if (childControl.HasControls()) 
         return FindControl(childControl, id); 
       } 

      } 

      return null; 
     } 
관련 문제