2014-12-17 3 views
1

정말 궁금합니다. 나는 일련의가있는 경우 텍스트 상자는 (결과 문자열이나이) 비어있는 경우 그때비어있는 경우 모든 텍스트 상자를 숨기는 방법

에 SQL 결과를 통과 한 후

을 확인 문.

if (IncidentData.Tables[0].Rows[0]["Property Category"].ToString() 
                == "RoadVehicle") 
{ 
    lbl_alarmOperated.Visible = false; tb_alarmOperated.Visible = false; 
} 
else 
{ 
    lbl_alarmOperated.Visible = true; 
    tb_alarmOperated.Visible = true; 
} 

내가 컨트롤에보고 난 모든 텍스트 상자에 체크를하고 비어있는 경우 (대신 경우 문장의 부하를 작성하는)을 숨길 수있는 경우보고 된

나는 순간이있다 :

public void ChecknHide() 
{ 
    HideTextBoxes(this); 
} 

protected void HideTextBoxes(Control ctrl) 
{ 
    foreach (var c in ctrl.Controls) 
    { 
     if (c is TextBox) ((TextBox)c).Text = String.Empty; 
     { 
      ((TextBox)c).Visible = false; 
     } 
    }   
} 

대부분이 여기에 게시물을 읽음으로써 만들어졌습니다. 하지만 문제가 생겼어. 내가 컴파일하고 페이지를 보려면 갈 때 나는이 얻을 :

'System.Web.UI.WebControls.TextBox'를 입력 유형 'ASP.masterpage_master'의 개체를 캐스팅 할 수 없습니다.

어떤 아이디어가 잘못 되었나요?

답변

0

이상한 코드 라인 : (C는 텍스트 상자 && ((텍스트 상자) C)는 .text == 문자열이 "해야 아마

protected void HideTextBoxes(Control ctrl) 
{ 
    //Iterate over controlls 
    foreach (var c in ctrl.Controls) 
    { 
     //Check for Textbox controls with the .Text property equal to Null or Empty. 
     if (c is TextBox && string.IsNullOrEmpty(((TextBox)c).Text)) 
     { 
      //Set visibility of Textbox control to invisible. 
      ((TextBox)c).Visible = false; 
     } 
    } 
} 
1

if 다음의 명령문은 조건의 일부가 아닙니다. 이로 인해 모든 컨트롤이 TextBox으로 형 변환됩니다. 에 관계없이

protected void HideTextBoxes(Control ctrl) 
{ 
    foreach (var c in ctrl.Controls) 
    { 
     if (c is TextBox && ((TextBox)c).Text == String.Empty) 
     { 
      ((TextBox)c).Visible = false; 
     } 

    } 


} 
+3

:

if (c is TextBox) ((TextBox)c).Text = String.Empty; 

같은 것을보십시오. 비어 있음 "). 왜냐하면 그는 비어있는 것들만 숨기기를 원하기 때문입니다. – Quintium

0

을 당신은 같은 줄에 String.Empty로에 텍스트 상자로 C를 캐스팅하고 설정하려고 다음 C는 텍스트 상자의 경우 체크 만하고, : 당신은 너무처럼 문제를 해결 할 수 있어야한다 실제로 TextBox인지 여부.

if (c is TextBox) ((TextBox)c).Text = String.Empty; 
관련 문제