我只是想知道。 我有一系列if语句检查
如果我传递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;
}
我一直在研究控件,看看我是否可以对所有文本框进行检查,如果它们是空的则隐藏它们(而不是编写if语句的加载)
我现在有这个:
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 :(得分: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;
}
}
}
答案 1 :(得分:0)
您正在检查c是否为TextBox,但是然后尝试将c转换为TextBox并将其设置为同一行中的String.Empty,而不管它是否实际上是TextBox。
if (c is TextBox) ((TextBox)c).Text = String.Empty;
答案 2 :(得分:0)
奇怪的代码行:
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;
}
}
}