2014-05-24 3 views
0

리피터 내부의 텍스트 상자 값을 확인하고 싶습니다. 모든 텍스트 상자가 비어있는 경우 내가이 구현을 시도 0으로 검사 값을 할당 할하지만 난 System.InvalidCastException리피터 내부의 텍스트 상자 값을 액세스하는 ASP.NET

  int check = 0; 

      foreach (TextBox tb in searchResultRepeater.Items) 
      { 
      if(tb.Text == ""){ 
       check = 0; 
      }else{ 
       check = 1; 
      } 
      } 

어떻게 내가이 예외를 해결할 수이 오류가있어?

답변

1

즉, Items 컬렉션의 모든 개체가 TextBox의 인스턴스가 아니라는 것을 의미합니다. TB는 텍스트 상자

foreach(RepeaterItem item in searchResultRepeater.Items){ 
    for (int i = 0; i < item.Controls.Count; i++) { 
     Control ctrl = item.Controls[i];  
     if(ctrl is TextBox){ 
      TextBox tb = (TextBox) ctrl; 
      if (tb.Text != null && tb.Text.Length > 0) { 
         check = 1; 
         break; 
      } 
     } 
    } 
    if (check == 1) 
     break; 
} 
+0

는 if 조건 내에서 오류를 발생시킵니다. – Tartar

+0

어떤 오류가 발생 했습니까? –

+0

if 문의 내부 - tb.Text.Length – Tartar

1

인 경우 searchResultRepeter 대신 사용한다 텍스트 상자 불구하고 루프의 중계기 인 경우 당신은 더 일반 객체로 정의 된 결핵 루프를 실행 한 다음 루프의 내부 확인해야 RepeaterItem. 모든 항목이 실제로 TextBox 유형인지 확인할 수 있습니다.

foreach(RepeaterItem item in searchResultRepeater.Items){ 
     if(item.Controls.Count > 0 && item.Controls[0] is ITextControl) { 
      if(((TextBox)item.Controls[0]).Text.IsNullOrEmpty()){ 
       check = 1; 
       break; 
     } 
    } 
+0

세 번째 줄에 오류가 있습니다. – Tartar

+0

어떤 종류의 오류가 발생 했습니까? 다시 InvaildCastException 이었습니까? – nizzik

+0

'System.Web.UI.WebControls.RepeaterItem'형식을 'System.Web.UI.WebControls.TextBox'형식으로 변환 할 수 없습니다. 이 오류입니다. – Tartar

관련 문제