2014-12-17 5 views
1

Мне просто интересно. У меня есть ряд, если заявления, которые проверяютКак скрыть все текстовые поля, если они пустые

если Textboxes пустое (или есть результаты строка) после того, как я передать 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; 
     } 
    }   
} 

Его главным образом составлены из прочитанных сообщений здесь. Но я столкнулся с проблемой. Когда я компилирую и перейти для просмотра страницы я получаю это:

Невозможно привести объект типа «ASP.masterpage_master» к типу « System.Web.UI.WebControls.TextBox».

Любые идеи, что происходит не так?

ответ

0

Weird строка кода:

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

Попробуйте что-то вроде:

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

Заявление после того, как оно не является частью условия. Это приводит к тому, что все элементы управления будут выдаваться на 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

вероятно, должно быть «, если (в это TextBox && ((TextBox) с) .Text == Строка. Empty) ", так как он только хочет скрыть те, которые пусты. – Quintium

0

Вы проверки, если с есть TextBox, а затем пытается бросить с как в TextBox и установить его на String.Empty в одной и той же линии, независимо от того, действительно ли это TextBox.

if (c is TextBox) ((TextBox)c).Text = String.Empty; 
Смежные вопросы